我在表格中输入了这些内容:
<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);
});
});
答案 0 :(得分:4)
不要重复使用您的id:只有一个元素可以拥有给定的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();
答案 1 :(得分:1)
重申:$("#layer_pk").length
等于1,无论你在页面上有多少元素具有相同的id。如果使用id选择器,jQuery只会看到具有该id的第一个元素。所以保持你的身份独特。