제이쿼리 질문 드립니다(모달 배경 클릭시 클래스 제거)
관련링크
http://nike.s-server.kr/
1512회 연결
본문
스터디용으로 나이키 사이트를 카피하고 있습니다.
960px 이하에서 작동하는 모바일메뉴를 만들고 있는데,
따로 close 버튼 없이 배경을 클릭하면 들어가게 만들고 싶거든요,,
.slide_menu_wrap에 배경을 주었고 그 안에 .slide_menu가 있는 구조입니다.
이벤트 타겟으로 wrap 클릭, 클릭 대상이 .slide_menu가 아니라면 닫기
이런식으로 짰는데 안되네요..
제 머리론 이 이상 방법이 생각나지 않아서.. 도움주실 분 구합니다.. ㅠ
function slideMenuOpen(){
$('.slide_menu_wrap').addClass('on');
}
$(function(){
$('.slide_menu_wrap.on').on('click', function(e) {
if( e.target != $('.slide_menu') ){
return false;
}else{
$('.slide_menu_wrap').removeClass('on');
}
});
});
답변 3
if( $(e.target) == $('.slide_menu') ){
alert("확인");
return false;
}else{
$('.slide_menu_wrap').removeClass('on');
alert("확인2");
}
이런식으로 정확히 동작하는지 체크하신 후에 removeClass 말고 그냥 display:none 를 해주면 없어지지 않나요?
$('.slide_menu_wrap').css('display', 'none');
다시 살릴때는
$('.slide_menu_wrap').css('display', '');
e.target != $('.slide_menu')
비교하는 객체가 Element와 jquery 객체라서 다를수밖예 없습니다
$(e.target) != $('.slide_menu')
비교문을 사용하시려면 로 하셔야 됩니다
e.target 이 slide_menu와 같으면 return false;
아니면 removeClass로 해야하는데 바보같이 썼네요,,
하지만 여전히 되지 않고 있습니다 도와주세요 ㅠㅠ
$('.slide_menu_wrap.on').on('click', function(e) {
if( $(e.target) == $('.slide_menu') ){
return false;
}else{
$('.slide_menu_wrap').removeClass('on');
}
});
답변을 작성하시기 전에 로그인 해주세요.