Остановите цикл jQuery each () - PullRequest
0 голосов
/ 13 марта 2012

, поэтому у меня есть несколько экземпляров класса .item, но они разбиты на разделы различий (это определенный класс и не могут быть изменены) ... теперь проблема в том, что у меня есть код, использующий: нечетный, чтобы изменить фониз пунктов, но когда начинается следующий раздел, он уходит из последнего.итак:

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

это код, который у меня есть на данный момент:

$('.item').each(function(){
    $('.item:odd').css('background','#FFF4F9');
});

так Экземпляр 1:

<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>
<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>
<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>

Экземпляр 2:

<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>
<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>
<div class="item" id="linkitem"><div class="link-item"><a title="" target="_blank" href="#">LINK</a></div></div>

спасибо заранее.

Ответы [ 6 ]

3 голосов
/ 13 марта 2012

Селектор, используемый $('.item:odd') независимо от того, включен он в цикле или нет, будет индексировать весь элемент class = на странице

Для выделения odd внутри контейнера:

 $('.container').each(function(){
     $(this).find('.item:odd').css('background','#FFF4F9');
});
2 голосов
/ 13 марта 2012

Чтобы избежать необходимости вырваться из цикла или проверить, где падает элемент, почему бы просто не использовать следующее:

$('.listitem').parent().find('.listitem:odd').css('background','#F00');

Для этого требуется селектор .listitem, поиск родительского элемента, а затемнаходит :odd потомков этого родителя, поэтому в каждом родительском элементе, каким бы оно ни было, «нумерация» перезапускается.

JS Fiddle demo .

1 голос
/ 13 марта 2012

Вам нужно будет ограничить ваш цикл каким-то контейнером. Прямо сейчас похоже, что вы делаете каждый другой элемент .ite во всем документе другим цветом. Если вы хотите только все остальные строки в контейнере, которые вы хотите. Так что, если у вас было:

<div class="container">
  <div class="item></div>
  <div class="item></div>
  <div class="item></div>
</div>
<div class="container">
  <div class="item></div>
  <div class="item></div>
  <div class="item></div>
</div>

Вы можете использовать следующий код:

$('.container').each(function(){
    $('.item:odd').css('background','#FFF4F9');
});
1 голос
/ 13 марта 2012

Использование return false внутри цикла each нарушит цикл.

1 голос
/ 13 марта 2012

Просто верните false в каждой функции вашего обработчика

0 голосов
/ 13 марта 2012

в вашем примере кода вообще нет причин использовать .each, вы просто запускаете один и тот же поиск 3 раза.

...