单击父项及其子项jquery的事件

单击父项及其子项jquery的事件,jquery,checkbox,onclick,Jquery,Checkbox,Onclick,我有一个带有tr的表,表中有classmsgdetails。在tr.msgdetails中,我有带有classsel\u checkbox的复选框。我有tr元素和checkbox的单击事件,我需要独立操作它。如果单击了checkbox,如果单击的不是复选框,而是tr,则复选框的事件应起作用,而另一个事件应起作用 我的html是这样的 其他一些数据 一些数据 我的jquery如下所示: $(“tr.msgdetails”)。单击(函数(e){ if((e.target.tagName.toLo

我有一个带有
tr
的表,表中有class
msgdetails
。在
tr.msgdetails
中,我有带有class
sel\u checkbox的复选框
。我有
tr元素和checkbox
的单击事件,我需要独立操作它。如果单击了
checkbox
,如果单击的不是复选框,而是
tr
,则复选框的事件应起作用,而另一个事件应起作用

我的html是这样的


其他一些数据
一些数据
我的jquery如下所示:

$(“tr.msgdetails”)。单击(函数(e){
if((e.target.tagName.toLowerCase()='checkbox')||
(e.target.tagName.toLowerCase()=='input'))
{
警报(“选中的复选框”);
}
其他的
{
警报(“单击行”);
}
返回false;
});
这有时会起作用,但效果不太理想。请帮助我

代码片段 ------------

Html

<div>

<table>
    <tr  class="msgdetails even" role="row">
   <td width="20%">
      <div class="checkbox_div">
           <input  class="sel_checkbox" type="checkbox">
      </div>
  </td>
  <td>some other data</td>
  <td>some  data      </td>
 </tr>
 </table>

</div>

我建议您对复选框使用更改事件,而不是单击$(“tr.msgdetails”)。单击(函数(e){if((e.target.tagName.toLowerCase()=='checkbox'))| |(e.target.tagName.toLowerCase()=='input')){alert('checked checbox');}否则{alert('row clicked')返回false;});“它有时可以工作,但不能完美工作”-它什么时候不能工作,为什么不能完美工作?当它不能工作时,
e.target.tagName
是什么?单击复选框并不总是意味着选中。如果在单击之前处于选中状态,则将取消选中。你发布的代码在我看来毫无意义。而
e.target.tagName.toLowerCase()=='checkbox'
就没什么意义了。不管怎样,我们不知道你期望的行为是什么???
$(document).ready(function() {
    $("tr.msgdetails").click(function(e){
    if(e.target.type==="checkbox"){
    var selCheckBox=$(e.target);
    if(selCheckBox.hasClass('sel_checkbox')){

          if($(selCheckBox).prop("checked")){
             alert('checked checbox'); 
            }
            else{
            alert('checkbox Unchecked');
            }
        }
    }else{
        /*if you dont want checkbox column row outside clicking to be disabled then*/
        var selCheckBox=$(e.target);
            var chk=$(selCheckBox).children().hasClass("sel_checkbox");
            if(chk){
                return false;
            }
      else{
                alert('tr clicked');
            }
    }


   });
});