2009-01-16 253 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