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