让我们说,我有这个代码:
<ul>
<li><strong>list</strong> item 1 -
one strong tag</li>
<li><strong>list</strong> item <strong>2</strong> -
two <span>strong tags</span></li>
<li>list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
<li>list item 6</li>
</ul>
<script>
var x = $("li");
for (var k in x){
alert(k + x[k]);
}
</script>
问题是:警报输出太多东西!为什么? 为什么不输出li元素? li元素存储在哪里? 我如何仅输出jQuery方法通常应用的li元素?
答案 0 :(得分:5)
答案 1 :(得分:3)
它将提醒整个原型链。使用jQuery(javascript)中的每个函数来迭代li元素。此外,不建议将in作为迭代对象的正确选择。
答案 2 :(得分:3)
使用for...in
构造也将迭代所有属性,包括通过原型链继承的所有属性,这就是为什么你得到被提醒对象的所有属性,以及匹配的{{1}的集合。 } elements。
如果您使用普通的li
循环(或者,正如其他人所说,jQuery for
方法),它会起作用:
each
答案 3 :(得分:1)
jQuery“对象”不仅包含 DOMnode引用。如果你像那样(for..in
)循环它,你将获得直接在对象上并通过原型链继承的所有属性。你应该简单地使用jQuerys自己的.each()
方法来遍历它的DOMnode引用:
x.each(function( index, node ) {
console.log('Hi, I am at index ', index, ' and my reference is: ', node);
});
答案 4 :(得分:1)
jQuery围绕与选择器匹配的DOM元素包装对象,有关详细信息,请参阅http://api.jquery.com/jQuery/。
这些警报的内容是该对象的功能和属性。