3

私は次の機能を持っています:

$("#example tbody").click(function(event) {
        $(oTable.fnSettings().aoData).each(function (){
            $(this.nTr).removeClass('row_selected');
        });
        $(event.target.parentNode).addClass('row_selected');
    });

ユーザーがテーブルの td 要素をクリックすると、row_selected クラスが行に追加されます。ただし、ユーザーが td 内の入力要素をクリックすると、row_selected クラスが td に追加されます。

親の代わりにクラスを親 tr に追加するように event.target.parentNode を変更する方法はありますか?

4

4 に答える 4

6

を使用しclosest()ます。

$(event.target).closest('tr').addClass('row_selected');
于 2012-07-22T18:18:34.587 に答える
1

独自の代わりに jQuery のイベント委任を使用するようにハンドラーを変更します...

$("#example tbody").on("click", "tr", function(event) {

...そして、あなたはただ使うことができますthis...

$(this).addClass('row_selected');
于 2012-07-22T18:37:11.270 に答える
0

祖先を見つけるようなものであるparentsUntil()関数を使用できます。祖先の機能を思い出せませんが、これは機能します:

$(event.target).parentsUntil("tr").addClass('row_selected');
于 2012-07-22T18:25:53.007 に答える
0

あなたはこれを試すことができます

$(event.target).closest('tr').addClass('row_selected');

あなたのラインの代わりに

$(event.target.parentNode).addClass('row_selected');

close()を使用すると、クリックした要素のrow_selected最も近いtr要素にクラスを適用できます。これは、tdまたはその中の他の要素である可能性があります。

于 2012-07-22T18:28:17.530 に答える