$ .each的jQuery替代品

时间:2011-04-21 15:54:56

标签: jquery each

我发现$ .each非常慢,如果包含大量各种jQuery效果,会给网页带来问题。

我想知道是否有一个很好的替代$ .each,例如:

$('ul li').each(function() {
   var singleLi = $(this);
});

没有悬停,我怎么能不使用它们呢?

感谢。

4 个答案:

答案 0 :(得分:23)

如果你想要一个实际的替代到“$ .each()”,只需使用“for”循环:

var liElements = $('ul li');
for (var i = 0; i < liElements.length; ++i) {
  var li = liElements[i];
  // ... lots of various jQuery effects ...
}

您可以跳过“.each()”并直接使用“.hover()”的建议是正确的,但是他们忽略了这一点:那些jQuery例程无论如何都将在内部执行“.each()”。 / p>

我怀疑从“$ .each()”切换到“for”循环本身会产生很大的不同。但是,

答案 1 :(得分:6)

没有each

的方式完全相同
$('#list li').hover(function() {
        $('#myDiv').stop().fadeIn(400);
    }, function() {
        $('#myDiv').stop().fadeOut(400);
    })
});

答案 2 :(得分:3)

是的...只需将悬停添加到所有li的

$('#list li').hover(function() {
    $('#myDiv').fadeIn(400);
}, function() {
    $('#myDiv').fadeOut(400);
});

$('#myDiv').fadeOut(400);

答案 3 :(得分:2)

由于ID必须是唯一的,因此如果删除.each(),则不应更改整个脚本。

$.hover()并不重要。

$('#list li').hover(function() {
    $('#myDiv').fadeIn(400);
}, function() {
    $('#myDiv').fadeOut(400);
});

$('#myDiv').fadeOut(400);