我有这样的结构
<table><tr><td></td><td><input type="button" name="button"></td></tr></table>
<script>
$('tr').click(function(){window.alert('tr');})
$(':input').click(function(){window.alert('input');})
</script>
当我点击按钮时,tr click事件也被调用。有没有办法禁用父元素上的click事件?我找到的唯一解决方案是将类添加到父元素,并在其单击函数内检查它。 例如:
<script>
$('tr').click(function(){ if(!$(this).hasClass('disable')) { window.alert('tr'); } $(this).removeClass('disable'); })
$(':input').click(function(){window.alert('input'); $(this).closest('tr').addClass('disable');})
</script>
答案 0 :(得分:14)
$('tr').click(function(){
window.alert('tr');
});
$(':input').click(function(e){
e.stopPropagation();
window.alert('input');
});
答案 1 :(得分:3)
.stopPropagation()会起作用但如果您不想停止整个事件,那么只要目标匹配就可以触发它。
答案 2 :(得分:2)
答案 3 :(得分:0)
您还可以使用event.stopimmediatepropagation()和event.isImmediatePropagationStopped()
检查传播状态$(':input').click(function(e){
e.stopImmediatePropagation();
var status = e.isImmediatePropagationStopped();
//CHECK
console.log(status); //true-false
});