2010-11-15 45 views
2

現在,我可以通過單擊按鈕來顯示div,並使用相同的按鈕將其隱藏。這工作正常,但我也想讓用戶能夠點擊新顯示的div或按鈕以外的地方顯示它,並仍然隱藏它。如何通過單擊文檔中相同的切換按鈕或其他位置來隱藏div

嘿傢伙,這是我第一次在這裏問一個問題,所以我很抱歉,如果我沒有輸入正確的代碼或東西。基本上我有一個按鈕,我只想要一種方法來打開一個隱藏的div(單擊所述按鈕),但有兩種方法可以關閉它(單擊同一個開始按鈕或文檔中的其他地方)。

這是我目前的代碼。

//This part works fine for opening and closing, but you can't click outside the button to make it close once opened.<br/> 

$(".account").click(function() { 
    $(".accountlinks").toggle(); 
    $(".account").toggleClass("active"); 
}); 

$(document).click(function(e) { 
    $('.accountlinks').hide(); 
    $(".account").removeClass("active"); 
}); 

$('.accountlinks').click(function(e) { 
    e.stopPropagation(); 
}); 

有一些方法,看它是否已打開,然後使用這個$('.account').hasClass('active');以某種方式document.click功能關閉它?

謝謝你的幫助。

+0

看起來像它可以工作。你可以檢查Firebug/Devtools控制檯,如果$('。accountlinks')。hide(); $(「。account」)。removeClass(「active」);'有什麼作用? – AndreKR 2010-11-15 23:50:21

回答

3

這是我的方法:與其將按鈕放置在「活動」類上,不如按照您的操作,我將其分配給div。這樣,您可以使用「活動」類在文檔中選擇打開的div。檢查出來:

$(function() { 
    $("#toggler").click(function(e) { 
     $("#toggled").toggle().toggleClass("active"); 
     e.stopPropagation(); 
    }); 

    $(document).click(function(e) { 
     $('.active').hide().removeClass('active'); 
    }); 

    $("#toggled").click(function(e) { 
     e.stopPropagation(); 
    }); 
}); 

而且這裏有一個演示:http://jsfiddle.net/Ender/xNQN3/

+0

非常感謝!這個效果很好,但我甚至進一步修改了它,以便在打開或關閉按鈕時給出樣式。 – Dave 2010-11-16 00:10:09

+0

$(function() { $(".account").click(function(e) { $(".accountlinks").toggle().toggleClass("open"); e.stopPropagation(); $(this).toggleClass("active"); }); $(document).click(function(e) { $('.open').hide().removeClass('open'); $('.account').toggleClass("active"); }); $(".accountlinks").click(function(e) { e.stopPropagation(); }); });對於任何人誰好奇你如何風格,並得到這個像夢一樣工作。再次感謝恩德 – Dave 2010-11-16 00:11:08

+0

高興地幫助:) – Ender 2010-11-16 00:27:47

相關問題