2009-01-16 254 views
0

参考my previous question我遇到了另一个问题。我展示的div包含链接。当我点击它们时,div就像预期的那样消失了,但并不是如我们所希望的那样。(我们希望它在任何页面上的任何地方点击...但它们内部的链接都会消失)隐藏元素

当前正在使用的代码:

$.listen('click', '.tabImg', function(event) { 
       var el = $('#tabs_menu'); 
       var dv = $('.tabImg').parent(); 

       var pos = dv.offset(); 


       $(el).show(); 
       $(el).css({"position": "absolute", "left": (pos.left) + "px", "top":20 + pos.top + "px" }); 

       $(document).one('click', function() 
       { 
        $(el).slideUp().hide() 
       }); 
       event.stopPropagation(); 
    }); 

tabs_menu是我与它的内部链接显示在div ...

究竟是什么解决办法?

回答

1

您需要将链接绑定到单击事件并停止冒泡,以便文档不会收到冒泡的单击。

我认为避免绑定多个点击事件的更好方法是监听点击内部点击的锚点。

所以基本上如果触发点击事件的元素是锚不向上滑动

$(document).one('click', function(ev) { 
    if (!$(ev.target).is('a')){ 
     $(el).slideUp().hide() 
    } 
}); 
0

您必须将他们自己的事件侦听器添加到链接并呼叫event.stopPropagation()里面。

+0

我不太明白你的意思。我应该在哪里添加什么? – 2009-01-16 11:27:10