使用YUI,我有一个div,有一个附加的侦听器,它告诉我如果我单击div,就执行一个回调函数。在div内部是一系列指向其他页面的普通html链接。我想要发生的是,如果我点击一个链接,我就会转到那个页面。但是,如果我单击div中链接之外的任何位置,它就会执行回调函数。
实际发生的情况是,如果我单击div中的一个链接,它将执行div的回调函数,然后立即导航到链接的页面。
我知道如何防止我在div中的点击出现在文档上。但是,我如何获取一个常规的旧html链接,并阻止点击该链接触发div的click事件?我是否必须使用它们自己的回调将链接重新格式化为javascript链接,然后停止传播?或者,有没有更简单的方法?
艾米
发布于 2009-09-10 22:06:38
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
}
});我在http://tivac.com/yui2/amy_events.htm上构建了一个示例页面,以防您想要看到它的实际效果。
发布于 2009-09-10 22:00:50
您可以检查event.target上的tagName,如下所示:
YAHOO.util.Event.addListener("container", "click", function(e) {
if (e.target.tagName == 'DIV') {
// do something magical!
}
}); 但是,如果您最终将div放在锚标记中,则显然会破坏这一点。
https://stackoverflow.com/questions/1407876
复制相似问题