2

これを行うクリックイベントがあります:

$('table tbody td').click( function (e) {
   // How to check if checkbox was clicked before doing the alert below?
   alert("td clicked");
}

ただし、私のテーブルには、クリックするとイベントが発生するチェックボックス付きの td がいくつかあります。Jquery で指定して、td 内のクリックがチェックボックスにあったかどうかを確認し、警告しないようにする方法はありますか?

4

3 に答える 3

1

checkboxチェックボックスがあなたからあなたへのイベントの伝播を停止するようにjQueryに指示できますtd

$('table tbody td input[type=checkbox]').click( function (e) {
   // How to check if checkbox was clicked before doing the alert below?
   e.stopPropagation();
}

基本的にこれが発生するのは、 をクリックするとcheckbox、ブラウザがそのclickイベントをチェックボックスからチェックボックスの親にバブリングし、次に まで上に移動しdocument、上記のコードがチェックボックスからの伝播を本質的に停止するためです。

イベントバブリングで読んでください

于 2012-04-25T03:00:07.077 に答える
0

これは、問題のチェックボックスがクリック可能なセルと同じテーブル行にあることを前提としています。

$('table tbody td').click( function (e) {

   if(!$(this).parent().find(':checkbox').prop("checked"))
       return;

   alert("td clicked");
}
于 2012-04-25T03:04:51.807 に答える
0

クリック関数に渡される eventObject を使用してターゲットを見つけ、それを使用して何をすべきかを決定できます。

$("table tbody td").click(function(e){
    if(e.target.nodeName.toUpperCase() == "INPUT"){
        alert("It's an input!");
    }else{
        alert("It's not an input!");    
    }
});
于 2012-04-25T03:08:36.780 に答える