在表格行中有一个输入复选框,我可以将click事件添加到行,仍然可以单击输入

时间:2015-06-17 05:11:41

标签: javascript jquery html checkbox

我有一张桌子:

<table>
  <tr>
    <td>Something</td>
    <td>Something Else</td>
    <td><input type='checkbox' value='clickme' id='yes'></td>
  </tr>

对于用户,如果他们点击该行,他们会获得有关该行的更多数据,如果他们单击该复选框,则会显示其他一些选项。我怎样才能在jquery中监听每个事件。我的问题是click for复选框显然会触发行单击

的事件
$('tr').click(function(){
     alert('you clicked the row');
});
$('#yes').change(function(){
      alert('you clicked the checkbox');
});

如果元素是动态创建的,那么这是否可行:

        $('#someTableId').on('click','#yes',function(e){
            alert($(this).attr('id'));
            e.stopPropagation();
    });

更新:第2部分的回答是。

3 个答案:

答案 0 :(得分:9)

您可以使用event.stopPropagation()试试这个: -

$('#yes').click(function(e){
 e.stopPropagation();
});

Demo

答案 1 :(得分:4)

使用event.stopPropagation停止事件冒泡,您需要为复选框绑定新的点击事件。

  

阻止事件冒泡DOM树,防止任何事件   家长处理人员被告知该事件。

Live Demo

$('#yes').click(function(event){         
      event.stopPropagation();
});

checkbox添加额外点击处理程序的另一个替代方法是在事件源为checkbox时跳过tr click handler的处理。

Live Demo

$('tr').click(function(event){
    if(event.target.id === 'yes') return;
     alert('you clicked the row');        
});

答案 2 :(得分:0)

使用event.stopPropagation();

<强>定义

阻止事件冒泡DOM树,防止任何父处理程序收到事件通知。