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 を再利用しないでください。特定の要素を持つことができるのは 1 つの要素だけです。

ここでは、同じ名前ではなく、クラスを使用する必要があります。

次に変更

$("#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 に答える