제이쿼리 무슨 문제인지 모르겠어요

제이쿼리 무슨 문제인지 모르겠어요

QA

제이쿼리 무슨 문제인지 모르겠어요

본문


var wid = $(window).width()+17;
        $(window).resize(function () {
            wid = $(window).width()+17;
            if(wid > 1200){
                $('.main_nav').show();
                $('.drop').hide();
            }else{
                $('.main_nav, .x').hide();
                $('.toggle').show();
                $('.drop').hide();
            };
        }).trigger('resize');
    
    function setIt(){
            if(wid > 1200){
                //네비 드롭다운
                $('.main_nav, .drop').hover(function () {
                    $('.drop').stop(true,false).slideDown(500);
                }, function () {
                    $('.drop').stop(true, false).slideUp(500);
                });
            }else{
                //토글네비 드롭다운
                $('.toggle').click(function () {
                    $('.main_nav').stop(true, false).slideDown(500);
                    $('.x').show();
                    $('.toggle').hide();
                });
                $('.x').click(function () {
                        $('.main_nav').stop(true, false).slideUp(500);
                        $('.toggle').show();
                        $('.x').hide();
                });    
            };
    };
    
    setIt();

리사이즈 안에 있는 if 문은 작동이 잘 됩니다. 

그런데 호버하고 클릭이벤트 부분은 

호버가 되면 클릭이 안되고(이용자가 창너비를 바꾸고 다시 사용한다고 가정했을때)

새로고침 해서 클릭이 되면 호버가 안되요 ㅠㅠ

호버하고 클릭을 리자이즈 안에 넣으면 css가 망가지고

섞여서 작동이 되요

고수님들 도와주세요...ㅠㅠ

이 질문에 댓글 쓰기 :

답변 1

1번 라인에서 

var wid = $(window).width()+17; 를 지정해버리고 나면 브라우저 크기가 바뀌어도 wid의 값은 변동되지 않습니다. 차라리 var wid=function(){ return $(window).width()+17;} 같이 하셔서

wid()를 값으로 활용하시는게 낫습니다.

그리고 이벤트를 저런식으로 부여할게 아니라, 엘리먼트에 이벤트를 모두 부여하고, 그 안에서 조건식으로 작동여부를 결정하는게 좋습니다. 현재와 같은 구조라면, 처음 브라우저 크기에 맞춰서 이벤트를 부여하고, 그 이후에는 이벤트를 부여하지 않기 때문에, 브라우저 크기가 변동된다고 새로 이벤트를 부여하지는 않기 떄문입니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 1,019
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT