Подтвердить что ты не робот

Является ли это четным или нечетным элементом?

Итак, я видел этот вопрос несколько минут назад на SO, и это заставило меня задуматься.

В основном у OP было что-то в этом роде

<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
$('div').each( function() {
   //do something different based on whether even or odd div
   if ($(this) == ':even') {}  //invalid markup I know!
   else {}
});

Есть ли способ сообщить внутри .each(), является ли текущий элемент нечетным или даже экземпляром?

Существует метод .filter для jQuery, но он всегда возвращает true, когда он имеет один элемент.

Я также понимаю, что вы можете использовать селектор nth-child или установить его другими способами, но мне интересно узнать об этом конкретном случае.

4b9b3361

Ответ 1

Обратный вызов .each передается индексом элемента и элементом:

$('div').each(function(i, el) {
   // As a side note, this === el.
   if (i % 2 === 0) { /* we are even */ }
   else { /* we are odd */ }
});

Ответ 2

$('div').each( function(index) {
   //do something different based on whether even or odd div
   if (index % 2 == 0) {}  // even
   else {} // odd
});

Ответ 3

Если вы знаете, что все элементы являются дочерними элементами одного и того же родителя, вы можете использовать индекс, предоставляемый каждым

$('div').each( function(index) {
    if (index%2 == 0) {}
    else {}
});

в противном случае используйте функцию index, которая будет вычислять индекс элемента среди его братьев и сестер.

$('div').each( function() {
    if ($(this).index()%2 == 0) {}
    else {}
});

Ответ 4

Использование JQuery api . (селектор)

$('div').each( function() {
    //Check if element is even
    if ($(this).is(":even")) {
    }

    //Check if element is odd
    if ($(this).is(":odd")) {
    }

});