这是我的代码..而不是使用.each()我们可以通过使用选择器完成相同的工作,请参阅下面的代码
$( "li" ).addClass( "foo" );
**所以为什么要使用这个**
$( "li" ).each(function() {
$( this ).addClass( "foo" );
});
答案 0 :(得分:2)
在您的示例中,使用each
没有意义,因为addClass
将适用于选择器中的所有元素。
但是在某些情况下,您需要为选择器中的每个特定元素获取数据,这就是使用each()
的原因。像这样:
$('.foo').each(function() {
var bar = $(this).data('unique-information'); // this would be different on each .foo element
$(this).plugin({
some-setting: bar
});
});
答案 1 :(得分:1)
如果要为每个元素执行不同的操作,请使用each
。第一种情况将对所有匹配元素应用共同操作。
在您的示例中,第一种情况是正确的方法。
更新:您需要each
的原因示例。请考虑以下html
:
<ul>
<li class="change-bg-and-add-p"></li>
<li class="change-bg-and-add-div"></li>
<li class="do-nothing"></li>
</ul>
如果您必须根据班级更改每个li
元素,您会怎么做?第一个例子是不可能的。但是,通过使用each
,您可以在循环访问每个匹配元素时更改每个li
。
答案 2 :(得分:1)
在这种情况下,否没有each
方法的附加值。
如果您想对每个元素进行更多计算,则需要使用each
方法。
考虑这个样本:
var i = 0;
$( "li" ).each(function() {
if (i/2 == 0)
{
$( this ).addClass( "foo-even" );
}
else
{
$( this ).addClass( "foo-odd" );
}
i = i + 1;
});
您需要each
,因为您希望根据某些计算对每个项目采取不同的操作。
答案 3 :(得分:0)
有时你必须做一些更复杂的事情:
$( "li" ).each(function() {
klass = $(this).attr('data-class');
$( this ).addClass( klass );
});
答案 4 :(得分:0)
.each用于将函数应用于一组html元素,其中您可能对每个元素执行的操作有不同的条件,而您建议的第一个语句将相同的操作应用于所有元素。名称。在您的示例中,.each方法完全没有意义,因为您可以使用“li”上的addClass更好地完成此操作