2012-04-02 98 views
0

我正在使用jQuery的.toggle方法來創建菜單,該菜單在單擊div時打開和關閉。這裏是我的代碼:「un」使用jQuery切換div

$(".header").toggle(function() { 
     $(this).find(".parent").fadeIn("fast"); 
     $(this).css("background-color","red");   
    }, function() { 
     $(this).find(".parent").fadeOut("fast"); 
     $(this).css("background-color","white");  
}); 

$(document).click(function() { 
     $('.parent').fadeOut("fast"); 
    $(".header").css("background-color","white"); 

}); 

$(".parent").click(function(event){ 
    event.stopPropagation(); 
}); 

http://jsfiddle.net/bmcmahen/X9S5C/8/

這工作順利,直到我點擊彈出菜單以外,關閉它,然後嘗試再次單擊菜單按鈕。然後它需要雙擊。我需要做的是從$(document).click函數中解開對div的點擊。有關我如何做這件事的任何想法?

+1

我一般從來不用切換,而不是我用一個「點擊」聽衆,並依靠'問題'當前狀態使用'.is(':hidden')' – anson 2012-04-02 23:54:02

+0

我正在考慮做類似的事情 - 我會給它一個鏡頭。 – bento 2012-04-03 00:02:55

回答

0
$(document).on('click', function() { 
    $(".header .parent").not(':hidden').closest('.header').click(); 
}); 

這將關閉所有彈出式菜單,而不僅僅是最新的一個打開。

讓所有事情都保持原樣。無需使用.data()或className。

Fiddle

+0

啊..這看起來更簡單。謝謝。是的,它關閉了所有打開的div。要將其翻譯爲英文:單擊文檔時,它會查找所有class .parent中未隱藏的元素,找到下一個前面的.header類,然後單擊它。這觸發切換選項,重置它。那是對的嗎? – bento 2012-04-03 00:47:34

+0

是的,正是如此! – 2012-04-03 01:41:01

0

您的代碼存在的問題是,您需要單擊兩次以使toggle函數再次繼續。所以當你點擊文檔時,你需要在標題上點擊兩次。

我試圖解決你的問題。你可以添加Active類,無論你點擊了什麼,當你點擊文檔triggeractive header。請參閱demo here

只需替換此代碼,然後它應該工作。

$(".header").toggle(function() { 
    $(this).addClass('Active').siblings().removeClass('Active'); 
    $(this).find(".parent").fadeIn("fast"); 
$(this).css("background-color","red");   
}, function() { 
    $(this).find(".parent").fadeOut("fast"); 
$(this).css("background-color","white");  
}); 

$(document).click(function() { 
     //$('.parent').fadeOut("fast"); 
    //$(".header").css("background-color","white"); 
    $(".header.Active").trigger('click'); 

}); 

$(".parent").click(function(event){ 
    event.stopPropagation(); 
}); 

$("#search").keyup(function(){ 
var query = $("#search").val(); 
    $("#results").append(query+"<br>"); 

}); 

+0

這是做到了。尼斯。它也從兄弟姐妹中刪除了這個類,使它更加健壯。謝謝! – bento 2012-04-03 00:13:15

+0

但是,如果在單擊文檔時顯示兩個或多個彈出菜單會怎麼樣?當然,你希望他們都隱藏起來。看到我的答案。 – 2012-04-03 00:34:03