пропустить элементы в каждой функции по условиям

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 (...) api.jquery.com/filter
  • 0
    ваш jQuery ищет идентификатор ( $(this).attr('id') ), но ваши элементы td не имеют идентификатора. Плюс, почему вы используете each функцию?
Показать ещё 2 комментария
Теги:

1 ответ

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, так как существует несколько совпадений с одинаковыми значениями.
  • 0
    @Johan Я счел разумным предположить, что его JavaScript был точным, но его HTML был урезанным (неправильным) представлением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню