Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery中的多个类上迭代多个元素_Javascript_Jquery_Forms - Fatal编程技术网

Javascript 在jQuery中的多个类上迭代多个元素

Javascript 在jQuery中的多个类上迭代多个元素,javascript,jquery,forms,Javascript,Jquery,Forms,我试图迭代3个表单,其中包含不同数量的输入框。在每个表单中,输入字段具有相同的类。我需要做的是,有一个“复制”按钮,这样当按下这个按钮时,它将从一个字段复制输入并复制到每个字段。以下是当前的设置方式: <input type="button" class="replicate" /> <form class="1"> <input class="1_size" /> <!--this is the one I want to copy to all

我试图迭代3个表单,其中包含不同数量的输入框。在每个表单中,输入字段具有相同的类。我需要做的是,有一个“复制”按钮,这样当按下这个按钮时,它将从一个字段复制输入并复制到每个字段。以下是当前的设置方式:

<input type="button" class="replicate" />

<form class="1">
  <input class="1_size" /> <!--this is the one I want to copy to all other fields -->
</form>
<form class="1">
  <input class="1_size" />
</form>

<form class="2">
  <input class="2_size" />
</form>
<form class="2">
  <input class="2_size" />
</form>
<form class="2">
  <input class="2_size" />
</form>

<form class="3">
 <input class="3_size" />
</form>
<form class="3">
  <input class="3_size" />
</form>

然后我可以使用类似于
.parents()
parent()
的东西吗?我有点卡住了,甚至不确定你是否可以像这样使用
each()
…希望我已经解释清楚了

> P> >尝试下面的内容,我认为代码>输入< /代码>代码>类型< /代码>是代码>文本< /代码>

$(document).ready(function() {
    $('input.replicate').click(function(){    
        var first_form = $('form:first');        
        $('form').not(first_form).each(function(){
          $(this).children('input:text').val(first_form.children('input:text').val());
        });
    });
});

Fiddle示例:

如果类名(或ID)的第一个字符是数字(如示例中所示),则需要():

尽管如此,dku.rajkumar的回答有一个很好的解决方案:

$('input.replicate').click(function() {    
  var $firstForm = $('form').first();
  $('form').not($firstForm).each(function() {
    $('input:text', this).val($('input:text', $firstForm).val());
  });
});
如果您只有一个“复制”按钮,您可能应该给它一个id而不是一个类以供选择,但无论如何,下面为该按钮创建一个单击处理程序,该处理程序将选择除第一个按钮外的所有具有以“_size”结尾的类属性的输入,并从第一个按钮分配值:

$(document).ready(function(){
    $("input.replicate").click(function() {
        var inputs = $('input[class$="_size"]');
        inputs.not(":first").val( inputs.first().val() );
    });
});
演示:

请注意,如果有多个类分配给输入,我使用的选择器将不起作用-在您的示例中没有,但在成品中当然可能有-因此您可能希望执行以下操作:

var inputs = $(".1,.2,.3").find("input");

是的,对不起,
。谢谢,我会试一试的。谢谢-试一试现在我已经测试过了,它能像你期望的那样工作。。检查示例linkAh很酷,谢谢,我不知道这一点。事实上,它们不是以数字开头的,我只是出于说明的目的。但是谢谢你确定你需要转义以数字开头的类名吗?我以前从来没有这样做过,我只是测试过它(使用我答案末尾的代码),它在Chrome中运行得很好。好的,但显然你不需要用jQuery选择器来做这件事:@nnnn-Sizzle支持它,但是当与
document.querySelector
document.querySelectorAll
一起使用时,它会抛出语法错误(
未捕获错误:语法错误:DOM异常12
)而且它在CSS中也不起作用。最好避开它。非常感谢,这是我一直在寻找的东西,现在就尝试一下。还有一个简短的问题,只是为了确认我的理解,
'class$=
,大概美元等于这个类是否包含?您在回答中已经说过,以结尾。。
$(document).ready(function(){
    $("input.replicate").click(function() {
        var inputs = $('input[class$="_size"]');
        inputs.not(":first").val( inputs.first().val() );
    });
});
var inputs = $(".1,.2,.3").find("input");