Это четный или нечетный элемент? - PullRequest
22 голосов
/ 06 октября 2011

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

По сути, у ОП было что-то в этом роде

<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(), является ли ваш текущий элемент нечетным или четным экземпляром??

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

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

Ответы [ 4 ]

57 голосов
/ 06 октября 2011

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

$('div').each(function(i, el) {
   // As a side note, this === el.
   if (i % 2 === 0) { /* we are even */ }
   else { /* we are odd */ }
});
9 голосов
/ 06 октября 2011
$('div').each( function(index) {
   //do something different based on whether even or odd div
   if (index % 2 == 0) {}  // even
   else {} // odd
});
6 голосов
/ 06 октября 2011

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

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

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

$('div').each( function() {
    if ($(this).index()%2 == 0) {}
    else {}
});
3 голосов
/ 06 апреля 2015

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

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

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

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...