Jquery每个问题

时间:2010-09-28 21:21:00

标签: jquery

我有一个简单的问题,如果可能,我需要一些帮助。我能有多个具有相同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); 
});

由于

4 个答案:

答案 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); 
});