Javascript YUI活动和链接

Javascript YUI活动和链接,javascript,events,yui,Javascript,Events,Yui,使用YUI,我有一个div,附带了一个侦听器,它说如果我单击这个div,就执行一个回调函数。div内部是一系列到其他页面的普通html链接。我想做的是,如果我点击一个链接,我就会进入那个页面。但是,如果我单击div中链接之外的任何位置,它将执行回调函数 实际发生的情况是,如果单击div中的链接,它将执行div的回调函数,然后立即导航到链接页面 我知道如何防止我在div中的单击冒泡到文档。但是,如何获取一个常规的旧html链接,并阻止对该链接的单击触发div的单击事件?我是否必须将链接重新格式化为

使用YUI,我有一个div,附带了一个侦听器,它说如果我单击这个div,就执行一个回调函数。div内部是一系列到其他页面的普通html链接。我想做的是,如果我点击一个链接,我就会进入那个页面。但是,如果我单击div中链接之外的任何位置,它将执行回调函数

实际发生的情况是,如果单击div中的链接,它将执行div的回调函数,然后立即导航到链接页面

我知道如何防止我在div中的单击冒泡到文档。但是,如何获取一个常规的旧html链接,并阻止对该链接的单击触发div的单击事件?我是否必须将链接重新格式化为具有自己回调的javascript链接,然后停止传播?或者,有没有更简单的方法


Amy

您可以检查
事件上的
标记名

YAHOO.util.Event.addListener("container", "click", function(e) { 
  if (e.target.tagName == 'DIV') {
     // do something magical!
  }
}); 

如果你最后在锚定标记内放置了一个div,那么你显然会破坏它。

你可以检查
事件上的
标记名。target
如下:

YAHOO.util.Event.addListener("container", "click", function(e) { 
  if (e.target.tagName == 'DIV') {
     // do something magical!
  }
}); 

如果你最后把一个div放在一个锚定标签里面,你会很明显地打破它。

赛斯的想法是正确的,尽管在你的检查中更具体一点是个好主意

YAHOO.util.Event.on("container", "click", function(e) {
    var tgt = YAHOO.util.Event.getTarget(e);

    if(tgt.nodeName.toLowerCase() !== 'a') {
        YAHOO.util.Event.preventDefault(e);

        console.log("Not an anchor!"); //TODO: REMOVE DEBUG OUTPUT
    }
});

我在上创建了一个示例页面,以防您希望看到它的实际应用。

Seth的想法是正确的,不过最好在检查中更具体一点

YAHOO.util.Event.on("container", "click", function(e) {
    var tgt = YAHOO.util.Event.getTarget(e);

    if(tgt.nodeName.toLowerCase() !== 'a') {
        YAHOO.util.Event.preventDefault(e);

        console.log("Not an anchor!"); //TODO: REMOVE DEBUG OUTPUT
    }
});

我在上创建了一个示例页面,以防您希望看到它的实际运行。

我想您指的是e.target.tagName,而不是evt.target.tagName我想您指的是e.target.tagName,而不是evt.target.tagName谢谢。工作起来很有魅力。我从这个网站的专家那里学到了很多。我认为这是我参加过的最好的编程社区。谢谢。工作起来很有魅力。我从这个网站的专家那里学到了很多。我认为这是有史以来最好的编程社区。