【问题标题】:can we use a .each within a .each in jquery?我们可以在 jquery 的 .each 中使用 .each 吗?
【发布时间】:2014-03-28 05:08:54
【问题描述】:
$("[name=form_1]").each(function(){
    alert("i in else"+i);
    $('.eform_text').each(function() {
    });
});

这个循环会遍历所有仅在 form1 中具有 eform_text 类的元素吗?还是会遍历所有具有该类的元素?

更新:

确切的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 的元素。不确定这里出了什么问题。你能帮忙吗?

【问题讨论】:

    标签: javascript jquery each


    【解决方案1】:

    它将遍历具有该类的 所有 元素,无论是否在名称为“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 在 cmets 中指出的那样(感谢 Shrikant!),我假设您原始代码中的 i 是传递给 each 的索引。我在上面的两个级别(带有描述性名称)都显示了索引。

    【讨论】:

    • 我想你忘了在给外部.each 的函数中使用i 参数。抱歉,忍不住指出:)
    • @Shrikant:谢谢。好吧,没有,我只是复制了 OP 的代码。 :-) 所以我不知道i 是否来自each(但我认为你是对的概率必须是99.9%,它是......)。我已经更新澄清,再次感谢。
    • 啊,我明白了。由于某种原因没有注意到问题
    【解决方案2】:

    你的第二个答案。

    因为您每次都调用$(,所以它会实例化一个新的 jQuery 对象副本,它并不关心它所在的函数级别。

    它将遍历具有该类的每个元素。

    【讨论】:

    • 您好,感谢您的及时回复。让我详细解释一下问题:
    【解决方案3】:
    $('.element').each(function(){
    
        $(this).find('.elementChild').each(function(){
    
            // do something
    
        });
    
    });
    

    【讨论】:

    • 我看不到代码 sn-p 本身如何回答这个问题,因为他没有问 如何 做某事,他要求解释。一般来说,最好包含一些关于您的代码的作用以及它如何回答问题或解决问题的说明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2011-07-19
    相关资源
    最近更新 更多