0

javascipt/jqueryでは、チェックされた要素名を取得するにはどうすればよいですか。これらは表にあります。そして、tdタグでチェックされたチェックボックスのラベルに到達して検出する必要があります。

$.each(value.Value, function (_, ObjElement) {
                    var tr = $('<tr>').appendTo(table);
                    $("<td>").appendTo(tr);
                    $("<td>", { id: 'clusterList' }).text(ObjElement.Name).append($('<input type=checkbox>').prop("checked", true)).appendTo(tr);

<td id="clusterList">Cluster1<input type="checkbox" checked="checked"></td>
<td id="clusterList">Cluster2<input type="checkbox" checked="checked"></td>
<td id="clusterList">Cluster3<input type="checkbox" checked="checked"></td>

最初と2番目のチェックボックスがチェックされている場合、結果は次のようになります。

Listcluster={Cluster1,Cluster2}

4

3 に答える 3

1

ID は一意である必要があります。代わりにクラスを使用する必要があります。mapメソッドを使用して、値を配列に格納できます。

var listCluster = $('table td').has('input[type=checkbox]:checked').map(function(){
    return this.textContent || this.innerText;
    // return $.trim( $(this).text() );
}).get();

http://jsfiddle.net/SUHsT/

于 2013-01-20T21:11:02.483 に答える
0
$('td input:checked').parent().text();

ところで ID は一意である必要があります。

于 2013-01-20T21:11:01.797 に答える
0

1) ID は一意でなければなりません。同じ ID を持つ要素を複数持つことはできません。

それでは、次の DOM があると仮定しましょう。

<table id="myTable">
  <tr>
   <td id="clusterList1">Cluster1<input type="checkbox" checked="checked"></td>
   <td id="clusterList2">Cluster2<input type="checkbox" checked="checked"></td>
   <td id="clusterList3">Cluster3<input type="checkbox" checked="checked"></td></tr></table>

そして、あなたの例に名前属性が含まれていないことを考えると、「名前」と言うときは「入力フィールドの直前のテキスト」を意味すると思います。次に、jquery は次のようになります。

     ListCluster = []
     $('table#myTable tr td input[type=checkbox]').on('change', function(){
           if($(this).attr('checked')=='checked'){
              if(ListCluster.indexOf($(this).parent().text()==-1){
                 ListCluster.push($(this).parent().text());
              }
           } else if(ListCluster.indexOf($(this).parent().text()>=-1){
              ListCluster.splice($(this).parent().text(), 1);
           }
      }

仕組みは次のとおりです。

配列 ListCluster を初期化します。次に、必要なネスト レベルですべてのチェックボックスに on change ハンドラを追加します。クリック ハンドラーではなく変更ハンドラーを使用する理由は、変更ハンドラーを使用すると、タブでチェックボックスに移動した後にスペースバーが押されたことに基づいて値の変更を処理できますが、クリック イベントではこれを取得できないためです。

変更ハンドラー内で、変更$(this)されたチェックボックスを参照し、.parent()1 レベル上に到達してそのラッピング td を取得します。

.text()すべての HTML を破棄して DOMElements テキストを取得します。

indexOf()は、値が見つかった最初のインデックスを返します。値が見つからない場合は -1 を返します。したがって、indexOf と -1 を比較することは、「このアイテムは存在しますか?」と尋ねることと同じです。

.push()は、配列の末尾に要素を追加する関数であり、.splice(x, y)x のインデックスから始まる y 要素を削除します。

于 2013-01-20T21:16:14.047 に答える