// 네비 이외 클릭하면(클릭한 곳이 .nav가 아니면) 네비 OFF
$('.outside-of-nav').on('click', function(e){
if($('.nav').has(e.target).length === 0 ){
//네비가 사라지는 함수 입력
}
//console.log($('.nav').has(e.target).length); //1 || 0
//console.log(e.target); //'.inside-of-nav' || '.outside-of-nav'
});
'html' 안을 클릭했을 때, '.nav'안에 그 클릭된 요소(e.target)의 길이가 0이면(=없으면) 함수를 실행해라.
여기서 (e.target)은 이벤트를 촉발시킨 엘리먼트(=여기서는 네비안의 메뉴)를 불러온다.
따라서, 'html'내 어딘가를 클릭했을 때, (e.target)이 '.nav' 또는 '.nav'의 자식이면 함수가 실행되지 않고,
(e.target)이 '.nav'또는 '.nav'의 자식이 아니면 함수가 살행된다.
※ 콘솔로 확인해보기
클릭한 곳이 '.nav'의 자식 '.nav_menu'이라고 가정하면,
console.log($('.nav').has(e.target).length); 값은 1, console.log(e.target);의 값은 '.inside-of-nav'가 나온다.
클릭한 곳에 '.nav' 이하의 요소들이 포함되어있지 않다면,
console.log($('.nav').has(e.target).length); 값은 0, console.log(e.target);의 값은 '.ouside-of-nav'이 나온다.
위 코드를 활용하여 만든 네비가 있어 추가한다.
클릭 대상을 메뉴가 나올때 어두워지는 .nav의 부모로 잡았는데 코드펜 임베드 화면이 작아서 짤리므롴ㅋㅋ 링크로 들어가서 모바일 크기로 보기ㅋㅋ
https://codepen.io/GIMME-the-world-/pen/GRPWeMx
See the Pen header-module1(responsive) by GIMME the world 김미더월드 (김미더월드) (@GIMME-the-world-) on CodePen.
'JS(JQuery)' 카테고리의 다른 글
jquery 엘리먼트를 역순, 최신순 정렬하기. 선택자 preAll() (0) | 2023.11.02 |
---|---|
jquery 제이쿼리 반응형 화면 사이즈 변하면 새로고침 (0) | 2023.10.26 |
jquery 제이쿼리 애니메이션 무한반복 만드는 법 Maximum call stack size exceeded 에러해결, 콜백함수, setInterval (1) | 2023.10.26 |
jquery 반응형 화면 사이즈 새로 측정하기. 미디어쿼리 구간과 오차 없애기 (0) | 2023.10.22 |
jqurey 특정 엘리먼트 위에서 AOS가 동작하게 하려면 (0) | 2023.10.21 |