2013-03-12 6 views
-6

로그인 버튼을 클릭 할 때 토글 할 로그인 영역 (아래 코드)이 필요합니다. 또한, 로그인 영역 밖에서는 클릭 할 때 로그인 영역을 숨기고 로그인 버튼에서는 숨길 필요가 없습니다.div의 바깥 쪽을 클릭하십시오.

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

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

어떻게하면됩니까?

+7

@eomeroff : 당신은 1151 담당자가 - 확실히 당신은 사람들이 당신에게 것을 지금 쯤은 알아야을 - – Paul

+0

방법 선택기를 사용하는 방법에 대한 ... '무슨 일이 지금까지 시도'하지? – egig

+0

@Westie 더 이상 1151이 없습니다. 그리고 내가 시도한 것을 묻는 사람은 아무도 없습니다. 시도 할 방법이 없다면 어떨까요? 이것은 연구 할 수없는 구체적인 질문입니다. 솔직히 나는 왜 5 표를 얻는 지 이유를 알지 못합니다. 희망이 질문은 누군가에게 유용 할 것입니다. – eomeroff

답변

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

+0

@Dogoku 아하! 업데이트 됨. –

-1

어떻게 그건?

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

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

이렇게하면 로그인 상자를 클릭해도 숨길 수 있습니다. –

+0

,'e.stopPropagation()'은 다른 핸들러로 이벤트 버블 링을 멈 춥니 다. – Dogoku

관련 문제