мы можем использовать .each внутри .each в jquery? - PullRequest
6 голосов
/ 17 мая 2011
$("[name=form_1]").each(function(){
    alert("i in else"+i);
    $('.eform_text').each(function() {
    });
});

будет ли этот цикл повторяться по всем элементам, которые имеют класс eform_text, только в форме 1. Или он будет повторяться по всем элементам, которые имеют этот класс?

Обновление:

Точный код JSP выглядит следующим образом:

<c:when test="${eformDetails.controlType==1}"> <input id="textBox_${eformDetails.id}_${eformDetails.required}_${i}" class="eformDetail eform_text" type="text" value="" name="form_${i}" onblur="validateEformInputs(${i-1})"></input> </c:when>

У меня есть форма, которая меняется каждый раз. и для каждой формы мне нужно получить все текстовые поля. В настоящее время после вашей помощи мой JavaScriptзадница выглядит следующим образом:

$ ("[name = form _" + i + "]"). each (function (i) {alert ("i in else" + i);

         $('.eform_text', this).each(function() {
        textboxId = $(this).attr("id");

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

Ответы [ 3 ]

11 голосов
/ 17 мая 2011

Было бы перебрать всех элементов с этим классом, будь то внутри формы с именем "form_1" или нет.Чтобы искать только внутри каждой формы (я предполагаю, что у вас должно быть несколько форм с именем «form_1», хотя это выглядит странно), используйте find во внешнем цикле, чтобы охватитьвнутренний цикл:

$("[name=form_1]").each(function(formIndex) {
    alert("formIndex in each: " + formIndex);
    $(this).find('.eform_text').each(function(textIndex) {
        alert("textIndex in each: " + textIndex);
    });
});

Или вы можете использовать второй аргумент для $(), который предоставляет контекст для работы:

$("[name=form_1]").each(function(formIndex) {
    alert("formIndex in each: " + formIndex);
    $('.eform_text', this).each(function(textIndex) {
        alert("textIndex in each: " + textIndex);
    });
});

Любой долженработа.

Обратите внимание, что, как отметил @Shrikant Sharat в комментариях (спасибо Shrikant!), я предположил, что i в вашем исходном коде означает индекс, который передается в each,Я показал индексы на обоих уровнях (с описательными именами) выше.

1 голос
/ 17 мая 2011

Ваш второй ответ.

Поскольку вы вызываете $( каждый раз, он создает новую копию объекта jQuery, которому все равно, на каком уровне функции он находится.

Это будет цикл через каждый элемент с этим классом.

0 голосов
/ 28 марта 2014
$('.element').each(function(){

    $(this).find('.elementChild').each(function(){

        // do something

    });

});
...