我的div
onclick
隐藏了div
。
如果我在div
中有链接,则该链接不起作用,因为onclick
会窃取点击。
期望的结果:如果在div内的任何地方点击链接,则div被隐藏。如果在链接上单击,则我希望链接在_blank窗口中打开,并且div保持可见。
有没有办法用javascript处理这个?
答案 0 :(得分:5)
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();
};
<强>验证强>
答案 1 :(得分:2)
在链接的点击处理程序中,您需要调用event.stopPropagation,或将e.cancelBubble设置为true,无论您的浏览器更喜欢哪个。这样可以防止事件冒泡到你的div。
document.getElementById("thelink").onclick = function (e) {
window.open();
if (e.stopPropogation)
e.stopPropogation();
if (e.cancelBubble != null)
e.cancelBubble = true;
};
答案 2 :(得分:0)
如果您控制链接,最简单的方法是添加onclick =“event.stopPropagation();” (或其任何跨浏览器版本)到每个链接,这会阻止div看到事件而不会阻止链接的默认效果发生。
或者,如果链接只包含文本,那么您可以在div的click事件中检查事件目标的标记名称以查看它是否是链接,但如果您有更复杂的东西,那么您需要走dom从事件目标到div的树,以验证没有链接。