我有一个简单的问题,如果可能,我需要一些帮助。我能有多个具有相同ID的输入并循环显示这些值吗?类似于下面代码的东西:
<p>ID:<input name="check_id" type="hidden" id="check_id" value="1"/></p>
<p>ID:<input name="check_id" type="hidden" id="check_id" value="2"/></p>
jQuery("#check_id").each(function(){
var check_data = jQuery(this).val();
alert(check_data);
});
由于
保
答案 0 :(得分:1)
没有。 ID必须是唯一的。您可能只会选择第一个。
你可能会做这样的事情,虽然效率较低:
jQuery("input[id=check_id]").each(function(){
var check_data = jQuery(this).val();
alert(check_data);
});
但是如果您要这样做,您也可以将您的ID修改为唯一,并按name
属性进行选择。
jQuery("input[name=check_id]").each(function(){
var check_data = jQuery(this).val();
alert(check_data);
});
如果您想要的所有<input>
元素都包含在容器中,您可以通过指定该容器来加快速度。
jQuery("#myContainer input[name=check_id]").each(function(){
var check_data = jQuery(this).val();
alert(check_data);
});
此代码示例假设存在ID为myContainer
的共同祖先。
编辑:关于您在下面的评论中的问题,return false;
循环内的.each()
仅退出循环。但是,您可以设置一个标志,告诉后续代码是否执行。
这样的事情:
var shouldContinue = true;
jQuery("#myContainer input[name=check_id]").each(function(){
var check_data = jQuery(this).val();
if( someCondition ) {
shouldContinue = false; // signal to not execute subsequent code
return false; // Halt the loop
}
});
if( shouldContinue ) {
// execute code if shouldContinue is true
}
答案 1 :(得分:0)
在HTML中,ID是唯一。所以不,在使用#..
选择器时,您将获得单个对象。未定义多次分配单个ID时的哪一个;实际上你应该解决这个问题!
答案 2 :(得分:0)
HTML id
attribute的重点在于它应该是唯一的。
也许您想使用classes代替?例如,请考虑以下事项:
<p>ID:<input name="check_id" type="hidden" class="check_id" value="1" /></p>
<p>ID:<input name="check_id" type="hidden" class="check_id" value="2" /></p>
...
jQuery(".check_id").each(function() {
var check_data = jQuery(this).val();
alert(check_data);
});
答案 3 :(得分:0)
您可以删除id
属性(正如其他人所说,在文档中必须是唯一的)并使用attribute-equals selector按名称进行选择,如下所示:
jQuery("input[name=check_id]").each(function() {
var check_data = jQuery(this).val();
alert(check_data);
});
或者添加class="check_id"
(仍然删除id="check_id"
)并使用类选择器,如下所示:
jQuery(".check_id").each(function() {
var check_data = jQuery(this).val();
alert(check_data);
});