0

我在表格中有这些输入:

<tr><td><input type="hidden" id="layer_pk" name="layer_pk"  value="1" /></td></tr>
<tr><td><input type="hidden" id="layer_pk" name="layer_pk"  value="2" /></td></tr>

当点击向上/向下移动表格行的按钮时,我想将这些输入值放入列表中

我不明白为什么这段代码只放置了选定的行输入值,而不是所有行:

$(document).ready(function(){
      $(".up,.down").click(function(){
          var row = $(this).parents("tr:first");
          if ($(this).is(".up")) {
              row.insertBefore(row.prev());
          } else {
              row.insertAfter(row.next());
          }
          var checks = new Array();
          $("#layer_pk").each(function(idx, elem) {
              checks.push($(elem).val());
          });
          alert(checks);
      });
  });
4

2 回答 2

4

不要重复使用你的 id :只有一个元素可以有一个给定的元素。

在这里,您甚至不应该使用相同的名称,而是使用一个类。

然后改变

$("#layer_pk").each(function(idx, elem) {
          checks.push($(elem).val());
});

$(".layer_pk").each(function(idx, elem) {
          checks.push($(elem).val());
});

或者,以更简单的方式:

$(".layer_pk").each(function() {
          checks.push(this.value);
});

或者

var checks = $('.layer_pk').map(function() { return this.value; }).get();
于 2013-08-15T15:15:14.340 回答
1

重申一下: $("#layer_pk").length等于 1,无论页面上有多少具有相同 ID 的元素。如果使用 id 选择器,jQuery 只会看到具有该 id 的第一个元素。所以保持你的身份证是独一无二的。

于 2013-08-15T16:01:43.647 回答