我有一张桌子:
<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部分的回答是。
答案 0 :(得分:9)
答案 1 :(得分:4)
使用event.stopPropagation停止事件冒泡,您需要为复选框绑定新的点击事件。
阻止事件冒泡DOM树,防止任何事件 家长处理人员被告知该事件。
$('#yes').click(function(event){
event.stopPropagation();
});
为checkbox
添加额外点击处理程序的另一个替代方法是在事件源为checkbox
时跳过tr click handler的处理。
$('tr').click(function(event){
if(event.target.id === 'yes') return;
alert('you clicked the row');
});
答案 2 :(得分:0)
使用event.stopPropagation();
<强>定义强>
阻止事件冒泡DOM树,防止任何父处理程序收到事件通知。