84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
有时候在用JQuery的 for in 和 each 循环的时候,会循环出元素有关的属性,这些属性这是干什么用的,能通俗的解释下吗,为什么用for循环就不会出现?
代码:
A B C
控制台截图
因为$("a")返回的是一个jQuery对象,另外它并不是一个数组,而是一个对象,你通过Array.isArray来判断一下就知道了,你说的多出来的属性,它们是用来储存一些jQuery内部需要用到的东东,如果你想要一个干净的数组,可以使用$('a').get();
for循环没有循环出多余的属性那是因为你循环的问题,你传递的是[0]、[1]这样东东,而你说的那些多余的属性,它可不是数字,自然就不会被循环出来啦。
$("a")本身会得到一个伪数组,对它each()是在这个数组里循环,每次循环处理的是一个 jQuery 封装的"a"对象,列出来的属性是这个"a"的 jQuery 对象的属性。如果没有$(this),直接用this打印出来的应该是一个 DOM 对象其及属性。这个用for应该是一样的效果。
$("a")
each()
"a"
$(this)
this
for
因为$("a")返回的是一个jQuery对象,另外它并不是一个数组,而是一个对象,你通过Array.isArray来判断一下就知道了,你说的多出来的属性,它们是用来储存一些jQuery内部需要用到的东东,如果你想要一个干净的数组,可以使用$('a').get();
for循环没有循环出多余的属性那是因为你循环的问题,你传递的是[0]、[1]这样东东,而你说的那些多余的属性,它可不是数字,自然就不会被循环出来啦。
$("a")
本身会得到一个伪数组,对它each()
是在这个数组里循环,每次循环处理的是一个 jQuery 封装的"a"
对象,列出来的属性是这个"a"
的 jQuery 对象的属性。如果没有$(this)
,直接用this
打印出来的应该是一个 DOM 对象其及属性。这个用for
应该是一样的效果。