Javascript 在jQuery中的多个类上迭代多个元素
我试图迭代3个表单,其中包含不同数量的输入框。在每个表单中,输入字段具有相同的类。我需要做的是,有一个“复制”按钮,这样当按下这个按钮时,它将从一个字段复制输入并复制到每个字段。以下是当前的设置方式: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
<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");