我发现$.each非常慢,如果包含大量不同的jQuery效果,会对网页造成问题。
我想知道是否有一个很好的替代方法来代替$.each,例如:
$('ul li').each(function() {
var singleLi = $(this);
});
没有hover,我怎么才能不使用each实现相同的效果呢?
谢谢。
如果你想要一个真正的替代方案来替换 "$.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()”。
然而,我怀疑仅仅从“$.each()”切换到“for”循环并不能产生多大的差异。
不使用each
的完全相同方法
$('#list li').hover(function() {
$('#myDiv').stop().fadeIn(400);
}, function() {
$('#myDiv').stop().fadeOut(400);
})
});
stop()
会确保两个效果不重叠。 - Naveed Ahmad.stop(true, true)
,否则它们只会停止并永远不会完成动画,您会陷入一个半透明的div。 - Code Maverick是的...只需将悬停效果添加到所有li即可
$('#list li').hover(function() {
$('#myDiv').fadeIn(400);
}, function() {
$('#myDiv').fadeOut(400);
});
$('#myDiv').fadeOut(400);
.each()
,整个脚本不应该发生改变。
$.hover()
没有太多意义。$('#list li').hover(function() {
$('#myDiv').fadeIn(400);
}, function() {
$('#myDiv').fadeOut(400);
});
$('#myDiv').fadeOut(400);
<li>
元素? 如果有成千上万个,那么问题在于您的DOM非常大,而不是“$.each()”很慢。 - Pointy