问问题
477 次
6 回答
3
于 2012-10-03T20:09:08.713 回答
2
如果您只希望绑定元素触发处理程序,请将其放在处理程序的顶部。
if (this !== e.target)
return;
现在,如果单击任何嵌套元素,代码将立即返回。(不要忘记为e
处理程序定义参数。)
于 2012-10-03T20:09:42.337 回答
1
$("#parent *").on("click", function(e) {
if ( e.target.nodeName.toLowerCase() == 'a' ) {
e.stopPropagation();
}
... your original code ...
});
于 2012-10-03T20:07:00.903 回答
0
您可以通过 target.nodeName 检查单击的元素
$("div").click(function(e){
if(e.target.nodeName == "div" $(e.target).hashClass('validDiv')){
// do stuff
}
else{
return false;
}
});
于 2012-10-03T20:07:08.467 回答
0
我首选的方法是将点击事件“劫持”成单独的单独函数。由于<a>
链接将首先被触发,因此您可以让该链接在页面内设置一个布尔值,<div>
onclick 检查并简单地让该链接在检测到之前的点击时返回 false。
var linkClicked = false;
function LinkClick(something)
{
linkClicked = true;
// Do something
}
function DivClicked(something)
{
if (linkClicked)
{
linkClicked = false;
return false;
}
// Do something else
}
于 2012-10-03T20:09:11.323 回答
0
这是一个小提琴:http: //jsfiddle.net/phillipkregg/65fNS/
这是非常基本的——因为我不知道你当前的代码是什么——但我没有看到 stopPropagation(); 有任何问题。
进行实验,如果您删除 ,e.stopPropagation()
您会看到当您单击链接时,它首先触发该函数,然后是 div 的函数。
于 2012-10-03T20:25:54.467 回答