jquery 오직 조건에서만 실행하는법

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
jquery 오직 조건에서만 실행하는법

QA

jquery 오직 조건에서만 실행하는법

본문

$(document).ready(function(){
    if($(".gnb_al_li>ul").css('display') == 'none'){
        $(".gnb_al_li").click(function(){
          $(this).find("ul").slideToggle('fast');
        });
    }
});

css 에서 .gnb_al_li>ul 이 너비960픽셀 이하에서 display:none 이 되게 설정해놨습니다.

위 스크립트를 위 클래스의 display:none 일때만 실행시키려고 해요.

960픽셀 이하로 설정해놓고 새로고침하면 적용이 잘됩니다.

그리고 다시 창크기를 키워 961픽셀 이상으로 하면 저 조건문이 그대로 적용됩니다.

961픽셀 이상이면 display:block으로 바뀌는데 왜 그대로 적용 될까요..

그리고 961픽셀 이상으로 해놓고 창크기를 줄여서 테스트해보면 저 조건문이 작동을 안합니다.

전에도 비슷한 질문을 했지만 해결이 되지않아 다시 올려보네요

이 질문에 댓글 쓰기 :

답변 2

당연히.. 지금의 코드는 한번밖에 작동을 안하는구조니깐요

 

페이지를 불러올때 if문의 조건을 타고 딱 한번 작동하는 코드입니다 지금상태로는

 

css에서 변경이들어가니깐 당연히 javascript에서는 알수가없지요

 

알수가있다해도 지금 코드로는 뭔짓을 하든 현재페이지에서는 딱한번만 실행하고 말겁니다

 

if문 조건을 너비감지로 바꾸셔야 할듯합니다

$(document).ready(function(){
  if($(window).width() < 960){
      $(".gnb_al_li>ul").hide();
      $(".gnb_al_li").click(function(){
        $(this).find("ul").slideToggle('fast');
      });
  }
});
이렇게 해봤는데도 똑같은 증상이 나옵니다

resize 이벤트에 넣어서 해보셨으면 합니다.

$(document).ready() 는 최초 문서로드가 다 된 뒤, 1회 실행되는 성격입니다.

 


$(window).on('resize', function(){  
  var win = $(this);
  if (win.width() >= 961) {
    // 창크기가 961픽셀 이상일 때 실행할 코드
  } else {  
    // 창크기가 961픽셀 미만일 때 실행할 코드  
  }
});
답변을 작성하시기 전에 로그인 해주세요.
전체 124,476 | RSS
QA 내용 검색

회원로그인

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