我有一个表与tr和td的click事件绑定。我还有一个文档点击事件。我的页面中有一个过滤器设置,所以如果选择了一个特定的过滤器,我需要阻止点击tr和td,只触发文档点击事件。我对元素点击没有任何控制权。我只控制文档点击(换句话说,我不能在元素点击中更改实现代码,但我可以绑定或处理)
$(document).ready(function(){
$("tr").click(function(evt){
$("#changehtml").html("Changed");
});
$("td").click(function(evt){
var test ="do some operation";
});
$(document).click(function(evt){
evt.stopPropagation();
evt.preventDefault();
});
});
我们有什么方法可以阻止元素在文档范围内的点击事件?
答案 0 :(得分:0)
如果您知道过滤器,则只需在点击事件中查看该过滤器即可。如果您在点击事件中返回false,它将不会执行任何操作。所以,试试这个:
$('element').on('click', function () {
if (myfilter...) {
return false;
}
// do some action
});
答案 1 :(得分:0)
您可以在捕获阶段处理事件而不是冒泡。我无法看到jQuery如何做到这一点,所以使用原生API:
document.getElementById('[some outer element id]').addEventListener(
'click',
function(e) {e.stopPropagation();},
true
);
第3个参数= true使其在捕获阶段被触发。