我有一个div
,它有一个隐藏div
的onclick
。保留具有onclick事件的div内的链接功能
如果我在div
内部有链接,则链接不起作用,因为onclick
窃取了点击。
想要的结果:如果点击是在div内的任何地方进行的,但是链接,div被隐藏。如果在链接上点击了一个链接,那么我希望链接在_blank窗口中打开,div保持可见。
有没有办法用javascript处理这个问题?
我有一个div
,它有一个隐藏div
的onclick
。保留具有onclick事件的div内的链接功能
如果我在div
内部有链接,则链接不起作用,因为onclick
窃取了点击。
想要的结果:如果点击是在div内的任何地方进行的,但是链接,div被隐藏。如果在链接上点击了一个链接,那么我希望链接在_blank窗口中打开,div保持可见。
有没有办法用javascript处理这个问题?
里面的链接点击处理程序,你要打电话event.stopPropagation,或设置e.cancelBubble到真为准您的浏览器更喜欢。这将防止事件冒泡到你的div。
document.getElementById("thelink").onclick = function (e) {
window.open();
if (e.stopPropogation)
e.stopPropogation();
if (e.cancelBubble != null)
e.cancelBubble = true;
};
演示不起作用。点击hello会触发“DIV”提示 – 2012-01-02 00:08:02
实际上它在FF中不起作用,但它可以在Chrome中使用。 – 2012-01-02 00:14:57
@UnoMeinAme - 我更新了我的回答 – 2012-01-02 00:24:00
document.getElementById('yourlinksid').onclick = function(e){
// ... pop your window ...
/* the following prevents the event from "bubbling up"
to the div's event handler */
if(!e.stopPropagation) {
e.cancelBubble = true;
return;
}
e.stopPropagation();
};
验证:
这个JS/jQuery mash不起作用。 'getElementById()'上下文中不存在'click()'。 – 2012-01-01 23:59:36
如果你控制链接,最简单的方法是添加onclick =“event.stopPropagation();” (或任何跨浏览器的版本)到每个链接,这阻止div看到事件,而不会阻止发生链接的默认效果。
或者,如果链接仅包含文本,则可以在div的click事件中检查事件目标的标签名称,以查看它是否为链接,但如果您有更复杂的事情,则需要步行dom树从事件目标到div来验证没有链接存在。
基本上是一样的东西:http://stackoverflow.com/questions/387736/how-to-stop-event-propagation-with-inline-onclick-attribute – 2012-01-01 23:53:33