2014-06-19 4 views
1

768px 이상이면 페이지로드시 목록을 표시하려고하지만 적은 경우 숨기고 제목 클릭시 표시하도록 설정하려고합니다.토글()을 사용할 때 버블 링을 올바르게 방지하는 방법은 무엇입니까?

창 크기를 조정 한 후에는 정상적으로 작동하지만 왜 작동하지 않는 이유는 무엇입니까? 어떤 충고?

제대로 버블 링을 처리해야합니까?

HTML :

<nav> 
    <h3 class="nav__title">first</h3> 
    <div class="links"> 
     <ul> 
      <li><a href="#">first one</a></li> 
      <li><a href="#">first two</a></li> 
      <li><a href="#">first three</a></li> 
     </ul> 
    </div> 
</nav> 
<nav> 
    <h3 class="nav__title">second</h3> 
    <div class="links"> 
     <ul> 
      <li><a href="#">second one</a></li> 
      <li><a href="#">second two</a></li> 
      <li><a href="#">second three</a></li> 
     </ul> 
    </div> 
</nav> 

JS :

:

jsfiddle

+1

반응 형 CSS는 사용자의 목적을 해결할 것입니다 .... –

+0

@CeeAim 그래서 대답해야합니다. –

답변

0

나는 이것이 당신이 원하는 생각

(function() { 

    function footerLinks() { 
     if ($(window).width() < 768) { 
      $(".links").hide(); 
      $(".nav__title").on("click", function (e) { 
       e.preventDefault(); 
       $(this).next(".links").toggle("fast"); 
      }); 
     } else { 
      $(".links").show(); 
     } 
    } 

    footerLinks(); 

    $(window).resize(function() { 
     footerLinks(); 
    }); 

}()); 
, 당신은 이벤트 핸들러 창 크기를 조정 한 모든 시간을 추가했다
(function() { 

    $(".nav__title").on("click", function (e) { 

       e.preventDefault(); 

       // Drop out of function if window is big enough 
       if($(window).width() >= 768){ return; } 

       $(this).next(".links").toggle("fast"); 
      }); 

    function footerLinks() { 

     if ($(window).width() < 768) {   

      $(".links").hide(); 

     } else { 
      $(".links").show(); 
     }    
    } 

    footerLinks(); 

    $(window).resize(function() { 
     footerLinks(); 
    }); 

}()); 

http://jsfiddle.net/E64j4/6/

+0

그 이유는 내가 제목을 768px보다 작 으면 목록을 확장하기를 원하기 때문입니다. 그리고 창 너비를 검사하는 곳에서 onclick 이벤트를 얻으면 버블 링 문제가 발생합니다. 이 일에 대해 어떻게해야합니까? 동일한 조건부에서 click 이벤트를 래핑하는 것은 실제로 작동하지 않습니다. – Chris

+0

여러 가지 방법이 있지만 위의 변경 사항을 참조하십시오. 언 바운드 이벤트도있을 수 있지만이 방법은 읽기 쉽고 유지하기 쉬운 방법이라고 생각합니다. 세 번째 솔루션은 CSS 클래스 및 미디어 쿼리를 사용했을 것입니다. – christian314159