保留具有onclick事件的div内的链接功能

时间:2012-01-01 23:50:45

标签: javascript html onclick

我的div onclick隐藏了div

如果我在div中有链接,则该链接不起作用,因为onclick会窃取点击。

期望的结果:如果在div内的任何地方点击链接,则div被隐藏。如果在链接上单击,则我希望链接在_blank窗口中打开,并且div保持可见。

有没有办法用javascript处理这个?

3 个答案:

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

<强>验证

http://jsfiddle.net/kSTNT/4/

答案 1 :(得分:2)

DEMO

在链接的点击处理程序中,您需要调用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的树,以验证没有链接。