JavaScript IF语句问题

时间:2011-02-01 12:20:23

标签: javascript jquery if-statement

由于缺乏编程技巧,我在撰写if语句时遇到了问题。

有代码:

   $("div.footerMenu li div.onScreen").click( 
  function(e) { e.stopPropagation(); e.preventDefault(); return false; } 
);

在此div内,我有简单的<a></a>链接。问题是,当我点击该链接时,没有任何反应。我正在尝试创建一个函数,如果function(e)的目标是.click标记,则不会执行<a></a>。有没有一种简单的方法可以做到这一点?

6 个答案:

答案 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();
}); 

示例:http://jsfiddle.net/jonathon/s2TxS/