2013-04-30 133 views
1

我有一个表与tr和td的点击事件绑定。另外我还有一个文档点击事件。我在页面中设置了过滤器,因此如果选择了特定的过滤器,我需要防止点击tr和td,并且只触发文档点击事件。我无法控制元素点击。我在文档单击只控制(换句话说,我不能改变元素点击执行代码,但是我可以绑定或处理)jquery点击事件防止

$(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

如果你知道过滤器,你只需要检查你的点击事件。如果你在点击事件中返回false,它不会做任何事情。所以,试试这个:

$('element').on('click', function() { 
    if (myfilter...) { 
    return false; 
    } 

    // do some action  
}); 
+0

这是处理元素点击。元素点击不在我的控制之下。 – 2013-04-30 17:52:58

0

你可以在捕获阶段处理事件而不是冒泡。我看不到的jQuery如何能做到这一点,因此,使用原生API:

document.getElementById('[some outer element id]').addEventListener(
    'click', 
    function(e) {e.stopPropagation();}, 
    true 
); 

第三个参数= TRUE使得它在捕获阶段被触发。