由于缺乏编程技巧,我在撰写if语句时遇到了问题。
有代码:
$("div.footerMenu li div.onScreen").click(
function(e) { e.stopPropagation(); e.preventDefault(); return false; }
);
在此div
内,我有简单的<a></a>
链接。问题是,当我点击该链接时,没有任何反应。我正在尝试创建一个函数,如果function(e)
的目标是.click
标记,则不会执行<a></a>
。有没有一种简单的方法可以做到这一点?
答案 0 :(得分:2)
你的问题是,因为你的链接在div中,你的代码阻止了click事件,因此没有任何反应。你可以试试这个:
$("div.footerMenu li div.onScreen").click(function(e) {
if(e.target.tagName.toLowerCase() != 'a') {
e.stopPropagation();
e.preventDefault();
return false;
}
});
我正在使用.toLowerCase()因为我不是100%所有浏览器中的tagName总是大写的。只是一个健全检查。
答案 1 :(得分:1)
我遇到了类似的问题,这里有解决方案:)
$("div.footerMenu li div.onScreen").click(function(e) {
if( !( $(e.target).is('a') ) )
e.stopPropagation(); e.preventDefault(); return false;
}
);
答案 2 :(得分:0)
是的,非常容易
if (e.target.nodeName !== "A") {
// your code here
}
答案 3 :(得分:0)
您需要检查节点是否具有tagName =='A'
if (this.tagName == 'A')
“this”应该引用被点击的节点,否则查找e.target或e.targetSrc(不知道jQuery等价物)
答案 4 :(得分:0)
单击元素时,仅显示将要运行的事件。但不是父元素上的事件。 您需要更改选择器以匹配所有子元素。
$(“div.footerMenu li div.onScreen&gt; *”) $(“div.footerMenu li div.onScreen&gt; a”)
答案 5 :(得分:0)
而不是检查目标是否是a
(对我来说,它有点乱),我宁愿把它分开并单独处理链接。只使用e.stopPropagation
,您就可以点击该链接并对其进行任何操作,并防止事件冒泡到div。
$("div").click(function(e){
alert('You clicked me, I am the div!');
});
$("div a").click(function(e){
// Allows the link to be clicked but prevents
// the event from bubbling up to the div
e.stopPropagation();
});