2013-10-02 3 views
0

как я могу пропустить некоторые элементы в each функции JQuery по следующему условию:пропустить элементы в каждой функции, условия

var number_of_td = 0; 
$('td').each(function() { 
    if (number_of_td == 0) { 
     if ($(this).attr('id') == "1") { 
      //skip the next three elements: 
      //something like: $(this) = $(this).next().next().next(); 
     } 
    } 
    else if (number_of_td == 1) { 
     if ($(this).attr('id') == "2") { 
      //skip the next two elements 
     } 
    } 
    else if (number_of_td == 2) { 
     if ($(this).attr('id') == "3") { 
      //skip the next element 
     } 
    } 
    else if (number_of_td == 3) { 
     if ($(this).attr('id') == "4") { 
      //skip the next element 
     } 
    } 
    else { 
     number_of_td++; 
     if (number_of_td == 4) { 
      number_of_td = 0; 
     } 
    } 
}); 

, например:

<td attr="1"></td> 
<td attr="6"></td> 
<td attr="7"></td> 
<td attr="9"></td> 
//------------------- 
<td attr="2"></td> 
<td attr="5"></td> 
<td attr="3"></td> 
<td attr="6"></td> 
//------------------- 
<td attr="7"></td> 
<td attr="2"></td> 
<td attr="8"></td> 
<td attr="6"></td> 

, если один из 4-х условий существует , пропустите до элемента td с attr=2.

В этом примере первый атрибут td равен 1, поэтому он пропускает до attr = 2 и не проверяет другие элементы (attr = 6,7,9).

2 не равен 1, 5 не равно 2, 3 равно 3, поэтому он пропускает до ATTR = 7 и т.д.

Я надеюсь, что вы можете понять мой пример.

любая помощь оценена!

+0

.filter (...) http://api.jquery.com/filter/ – Oliboy50

+0

ваш Jquery ищет id ('$ (this) .attr ('id')'), но ваши td-элементы не имеют идентификатора. Кроме того, почему вы используете функцию 'each'? – andi

+0

Использовать return false; – Guerra

ответ

2

Добавить переменную-счетчик, и пропустить цикл, если счетчик не достиг нуля:

$('td').each(function() { 
    if (+$(this).data('counter')>0) { 
     $(this).data('counter', $(this).data('counter')-1); // decrement counter 
     return; // continue to next loop iteration 
    } 
    if (number_of_td == 0) { 
     if ($(this).attr('id') == "1") { 
      $(this).data('counter', 2); // skip two more after this one 
      return; // skip to next loop iteration 
     } 
    } 
+0

Просто небольшое примечание: '.attr ('id')' должно быть '.attr ('attr')', если вы посмотрите на код OP. Я не думаю, что он использует id: s, так как существует несколько вхождений одинаковых значений. – Johan

+0

@ Johan Я счел разумным предположить, что его JavaScript был точным, но его HTML-образ был ограниченным (неправильным) представлением. – Blazemonger

Смежные вопросы