스레드
이온디

jQuery - 레이어 바깥 클릭할 때 레이어 사라지게 하는 방법



많이 보던 기능이지만 정작 구현할라니까 막막했던 그것. 역시 구글느님.



$(document).mouseup(function (e){

var container = $("해당레이어 아이디");

if( container.has(e.target).length === 0)

container.hide();

});



출처 : http://poponyang.tistory.com/m/post/entry/jQuery-%EB%A0%88%EC%9D%B4%EC%96%B4-%EB%B0%94%EA%B9%A5-%ED%81%B4%EB%A6%AD%ED%95%A0-%EB%95%8C-%EB%A0%88%EC%9D%B4%EC%96%B4-%EC%82%AC%EB%9D%BC%EC%A7%80%EA%B2%8C-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95




특정영역을 제외한 영역 클릭시 JQuery has를 이용한





사이트 상단의 검색어 input[type=text]를 클릭시

자동완성 기능과 유사한 레이어가 display:block 이 되고

input과 보여진 레이어를 제외한 나머지 body부분을 클릭했을때

레이어를 display:none 하려 한다.



사이트 dtd선언이 애매한 상황이라 jquery modal과 같이 브라우저 전체를 덮는 레이어 생성이 불가능하여

아래 코드로 해결할 수 밖에 없었다.



### 특정 영역을 제외, 나머지 클릭시 반응 이벤트















검색





.....






출처 : http://m.blog.naver.com/kanasii79/140196680217






레이어 창이 떴다가 다른곳에 마우스를 클릭하면 자동으로 닫히는 기능입니다.











팝업 테스트









/* 마우스 다운 이벤트 시에

* 사이트에서 뛰워놓은 팝업을 닫는다.

*/

$(document).ready(function(){

$(document).mousedown(function(e){

$('._popup').each(function(){

if( $(this).css('display') == 'block' )

{

var l_position = $(this).offset();

l_position.right = parseInt(l_position.left) + ($(this).width());

l_position.bottom = parseInt(l_position.top) + parseInt($(this).height());



if( ( l_position.left <= e.pageX && e.pageX <= l_position.right )

&& ( l_position.top <= e.pageY && e.pageY <= l_position.bottom ) )

{

//alert( 'popup in click' );

}

else

{

//alert( 'popup out click' );

$(this).hide("fast");

}

}

});

});

})



/*

* 레이어 팝업창 보이기

*/

function show_popup()

{

$('._popup').show("fast");

}







팝업창 열기







출처 : http://han300.blogspot.kr/2012/11/blog-post.html?m=1

1 좋아요 0 답글 4916 조회