2015-02-16 8 views
1

Я знаю, как запустить код для первого найденного элемента в каждом() цикл:Выполнение кода для первого элемента в JQuery каждый() цикл, который удовлетворяет условию

$('.selector').each(function(i, el){ 
    if (i === 0) { 
     // do something 
    } 
}); 

Но как запускать код для первого элемента , удовлетворяющий определенному условию в каждом цикле()?

Что-то вроде этого:

$('.selector').each(function(i, el){ 
    if (first element meeting the condition) { 
     // do A 
    } 
    elseif (next elements meeting the condition) { 
     // do B 
    } 
    else { 
     // do C 
    } 
}); 
+0

Что условие? –

+0

Как только вы в первый раз согласовали селектор, вы можете вырваться из каждого(), выполнив 'return false'. Или, если вам нужно продолжить, объявите логическое значение за пределами each() и установите его в true в цикле, когда условие будет выполнено. Используйте boolean как часть проверяемого условия. – ElGavilan

+0

Josh Crozier: класс селектора, равный переменной? Если да, то X, если нет, то Y. И это должно применяться только для первого найденного элемента. Следующие - еще одна история. – drake035

ответ

0

Если вы пытаетесь сделать что-то на первый элемент, который имеет некоторый текст, например просто if (el.text() == 'something'), а затем вызвать return в состоянии остановить

1

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

Example Here

(function() { 
    var conditionSatisfied = false; 
    $('.selector').each(function (i, el) { 
     if ($(this).hasClass('foo') && !conditionSatisfied) { 
      conditionSatisfied = true; 
      // .. 
     } else { 
      // .. 
     } 
    }); 
})(); 

В зависимости от того, что вы пытаетесь достичь, вы можете на самом деле не нужен цикл. Вы можете просто выбрать элемент напрямую. Например, вы можете выбрать элемент .selector с классом .foo и использовать либо :first/.first(), чтобы выбрать первый соответствующий элемент.

$('.selector.foo').first(); 
$('.selector.foo:first'); 
+0

Thx, но это первый элемент, удовлетворяющий условию, не обязательно первый элемент набора – drake035

+0

@ drake035 О, ладно. Обновлено. –

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