在jquery中使用each()有什么特殊目的吗?

时间:2014-06-04 12:02:58

标签: jquery

这是我的代码..而不是使用.each()我们可以通过使用选择器完成相同的工作,请参阅下面的代码

$( "li" ).addClass( "foo" );

**所以为什么要使用这个**

$( "li" ).each(function() {
  $( this ).addClass( "foo" );
});

5 个答案:

答案 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更好地完成此操作