2013-02-18 181 views
1

我有一個面板,它可以通過單擊.open類來打開和關閉以顯示菜單。當我第一次點擊它時,它很好,面板打開。面板打開後,我點擊菜單項,面板關閉。停止傳播

我面臨的問題是,一旦面板在點擊菜單項後關閉,在面板再次打開之前,我需要打兩次.open

我第一次運行這個命令:

$(".open").toggle(function(){ 
    $(".header").animate({height:"100%"},200); 
    },function(){ 
     $(".header").animate({height:50},200); 
}); 

這將打開一個面板,具有菜單,然後當我點擊菜單項上我做的:

$(".navMore li a").on("click", function(e) { 
    e.preventDefault(); 
    ... 

是否與傳播的問題?添加:

$(".navMore li a").on("click", function(e) { 
    e.preventDefault(); 
    e.stopPropagation(); 

仍然讓我面臨同樣的問題。

+0

目前尚不清楚你想要什麼來實現的,或者是什麼,你所面臨的問題。請詳細說明。 – 2013-02-18 00:13:21

+0

我已經更新了這個問題。 – 2013-02-18 00:22:33

回答

1

在JQuery中,click事件冒泡。爲了防止你需要停止傳播,鼓勵下層元素停止高層元素的處理器發射。

$('.open')功能,你需要把以下內容:

$(".open").toggle(function(event) { 
    if(!$(event.target).is("a")) 
     { 
      $(".header").animate({height:"100%"},200); 
     } 
},....); 
+0

謝謝,目標是什麼? – 2013-02-18 00:27:41

+0

.open不是一個「a」而是一個塊 – 2013-02-18 00:28:32

+0

target是事件的一個屬性,它告訴你該元素是否被觸發。 – 2013-02-18 00:35:43