Jquery点击事件阻止

时间:2013-04-30 06:54:07

标签: jquery jquery-ui javascript-events

我有一个表与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();
  });
});

我们有什么方法可以阻止元素在文档范围内的点击事件?

2 个答案:

答案 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使其在捕获阶段被触发。