2013-03-12 107 views
-6

我希望登錄區域(在下面的代碼中)切換登錄按鈕單擊。另外,我需要在登錄區域以外的任何地方點擊登錄區域,而不是登錄按鈕。點擊外部和更多

<button id="loginBtn">Login</button> 

<div id="loginArea"> 
    <!-- here is login form --> 
</div> 

我該如何做到這一點?

+7

@eomeroff:你有1151代表 - 當然,你現在應該知道,人們會問你 - 「你嘗試過什麼到目前爲止,」 ......關於使用選擇如何 – Paul 2013-03-12 13:29:46

+0

:不是? – egig 2013-03-12 13:30:28

+0

@Westie我沒有1151了。而且我沒有看到有人問我試過了什麼。如果我不知道如何嘗試,該怎麼辦?這是一個無法研究的具體問題。老實說,我沒有看到5倒票的原因。希望這個問題對某個人有用。 – eomeroff 2013-03-12 13:42:53

回答

1
$(function() { 
    $('#loginBtn, #loginArea').on('click', function(e) { 
     $('#loginArea').show(); 
     e.stopPropagation(); 
    }); 
    $('body').on('click', function() { 
     $('#loginArea').hide(); 
    }); 
}); 

如果點擊位於登錄區域內或按鈕上,則該事件將不會使其進入第二個處理程序以隱藏登錄區域。

2

使用:

$('body').on('click', '#loginBtn', function(){ 
    $('#loginArea').show(); 
}); 

會顯示登錄,而下面將刪除它,當你點擊它外面:

$(document).on('click', 'body:not(#loginArea)', function(){ 
    $('#loginArea').hide(); 
}); 
+0

.remove()將從DOM中刪除div。 – Dogoku 2013-03-12 13:32:50

+0

@Dogoku啊好抓!更新。 – 2013-03-12 13:33:32

-1

是如何形成的?

$('#loginBtn').click(function (e) { 
    $('#loginArea').toggle(); 
    e.stopPropagation(); 
}); 

$(document).on('click',function() { 
    $('#loginArea').hide(); 
}); 
+0

即使單擊它,也會隱藏登錄框。 – 2013-03-12 13:32:12

+0

不,它不會,'e.stopPropagation()'停止事件冒泡到其他處理程序 – Dogoku 2013-03-12 13:33:46