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

在jquery中使用each()有什么特殊用途吗?,jquery,Jquery,这是我的密码。。不使用.each(),我们可以通过使用选择器来完成相同的工作,请参见下面的代码 $( "li" ).addClass( "foo" ); **那么为什么要用这个呢** $( "li" ).each(function() { $( this ).addClass( "foo" ); }); 如果要对每个元素执行不同的操作,请使用每个。第一种情况将对所有匹配元素应用公共操作 在您的示例中,第一种情况是正确的方法 更新:关于为什么需要每个的示例。请考虑下面的代码 HTML :

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

$( "li" ).addClass( "foo" );
**那么为什么要用这个呢**

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

如果要对每个元素执行不同的操作,请使用
每个
。第一种情况将对所有匹配元素应用公共操作

在您的示例中,第一种情况是正确的方法

更新:关于为什么需要
每个
的示例。请考虑下面的代码<代码> 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

在这种情况下,
each
方法没有附加值

如果要对每个元素进行更多计算,则需要使用
each
方法

考虑以下示例:

var i = 0;

$( "li" ).each(function() {
  if (i/2 == 0)
  {
      $( this ).addClass( "foo-even" );
  }
  else
  {
      $( this ).addClass( "foo-odd" );
  }

  i = i + 1;
});

这里您确实需要
每个
,因为您希望根据某些计算对每个项目采取不同的操作。

在您的示例中,使用
每个
是没有意义的,因为
addClass
将对选择器中的所有元素起作用

但是,在某些情况下,您需要获取选择器中每个特定元素的数据,这就是使用
each()
的原因。大概是这样的:

$('.foo').each(function() {
    var bar = $(this).data('unique-information'); // this would be different on each .foo element
    $(this).plugin({
        some-setting: bar
    });
});

有时你不得不做一些更复杂的事情:

$( "li" ).each(function() {
  klass = $(this).attr('data-class');
  $( this ).addClass( klass );
});

。每个用于将函数应用于一组html元素,其中您可能对每个元素有不同的操作条件,而您建议的第一条语句将相同的操作应用于名称的所有元素。在您的示例中,.each方法完全没有意义,因为您可以使用“li”上的addClass做得更好。

这取决于复杂性和您正在处理的任务。如果只有属性值为某物的某些元素,那么您要做什么?在这种情况下,请使用。谢谢,现在我知道了。。这意味着,当我们想要迭代各种li时,我们需要.each()。每次通过循环得到不同的值时,我们都可以相应地进行工作:)@本德曼:)没错。对每个li$执行不同的操作。each()将是要使用的正确函数。但如果你能将一个函数应用于所有函数(比如addClass),那么一定要这样做以使它更简单。@PatrickHofman,这是真的。我为公司所拥有的只是这些价值较低的互联网点;)男人,即使我没有回购协议:P我需要15个回购协议来投票我是新来的@帕特里克霍夫曼:)一个月前加入了stackoverflowP即使我没有回购协议:P我需要15份回购协议才能投票支持……)我是新来的@RoryMcCrossan:)一个月前加入stackoverflowP@RoryMcCrossan:现在您有10个额外的;)ohhhh这意味着each()充当一个循环,循环遍历当前的每个li或任何元素@帕特里克