2013-09-26 5 views
0

media-queries 사용 내 로고가 맨 아래에있는 동안 접히는 navbar를 만들었습니다. enquire.js와 나는 마지막 li을 prepended. 첫 번째 경기에서만 프리 벤트를 실행하여 각각의 경기가 오른쪽으로 전환되는 것을 방지하려면 어떻게해야합니까?첫 번째 경기에서만 선택기 앞에 붙이는 방법은 무엇입니까?

prependLogo : function() { 

     query = "screen and (max-width: 979px)"; 
      handler = { 
       match: function() { 
        $(.nav-collapse .nav).prepend($("li:last")); 
       }, 

       unmatch : function() { 

       }, 
      }; 

      enquire.register(query, handler); 
    }, 

답변

0

이 문제를 처리하는 데는 두 가지 방법이 있습니다. 하나는 문의 번호 unregister 방법을 이용하는 것입니다. 다른 하나는 setup 콜백과 deferSetup 플래그를 이용하는 것입니다.

setup 콜백은 한 번만 호출됩니다. 일반적으로 쿼리가 등록 될 때 즉시 호출되지만 deferSetup 플래그와 함께 사용하면 쿼리가 처음으로 일치 할 때까지 설정이 지연됩니다 (불행히도 문의 할 때 항상 match 콜백이 필요하므로 여기에 빈 함수를 제공합니다) : 쿼리를 등록 취소, 예상대로

enquire.register("screen and (max-width: 979px)", { 
    setup : function() { 
    $(.nav-collapse .nav).prepend($("li:last")); 
    }, 
    deferSetup : true, 

    match : function() {} 
}); 

unregister 방법은 않습니다. http://codepen.io/WickyNilliams/pen/vFLEH 또한

, 위의 코드에서 참고, 당신이 아니에요 :

여기
enquire.register("screen and (max-width: 979px)", { 
    match : function() { 
    $(.nav-collapse .nav).prepend($("li:last")); 
    //note this unregisters *all* handlers for this mq (if you have more than one) 
    enquire.unregister("screen and (max-width: 979px)"); 
    } 
}); 

이 두 가지 접근 방법을 보여주는 작업 예이다 : 우리는 우리의 일치 콜백 내에서 unregister를 호출 할 경우 우리는 또한 같은 효과를 얻을 수 있습니다 var 키워드를 사용하여 변수를 초기화하십시오. var없이 선언 된 변수가 전역 범위에 첨부되어 있기 때문에 JS에서 나쁜 관행입니다. 이는 아마도 원하는 것이 아닙니다.