jQuery альтернатива $ .each - PullRequest
7 голосов
/ 21 апреля 2011

Я обнаружил, что $ .each очень медленный и создает проблемы для веб-страниц, если содержит много различных эффектов jQuery.

Я хотел бы знать, есть ли хорошая альтернатива $.каждый, например:

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

без наведения, как я могу сделать то же самое без использования каждого?

Спасибо.

Ответы [ 4 ]

23 голосов
/ 21 апреля 2011

Если вы хотите фактическую альтернативу $ "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 () «to» for сам по себе будет иметь большое значение.

6 голосов
/ 21 апреля 2011

Точно так же без each

$('#list li').hover(function() {
        $('#myDiv').stop().fadeIn(400);
    }, function() {
        $('#myDiv').stop().fadeOut(400);
    })
});
3 голосов
/ 21 апреля 2011

да ... просто наведите курсор на все ли

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

$('#myDiv').fadeOut(400);
2 голосов
/ 21 апреля 2011

Поскольку идентификатор должен быть уникальным, весь сценарий не должен изменяться при удалении .each().

$.hover() не имеет большого значения.

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

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