2016-10-19 4 views
0

나는 이것을 사용해 보았지만 어떤 키워드를 사용해야하는지 잘 모르겠다. 그래서 나는 비어있게 될 것이다. 어쨌든, 나는 내 기능과 발사 방식이 비교적 간단하다는 것을 느낀다.크기 조정시 다른 기능 실행

내가 원하는 기능은 다음과 같습니다. ".menu-item-has-children a i"구조로 탐색 옆에 작은 화살표가 있습니다. 모바일 (880px 미만)에서 해당 <i> 요소를 클릭하고 아래의 <ul>을 토글하고 싶습니다. 데스크톱에서는 그렇지 않습니다. 위의 두 가지 뷰포트 크기 (880 미만 및 880 이상) 사이를 전환 할 때까지 제대로 작동합니다. 그런 다음 페이지를 다시로드 할 때까지 원하는 기능이 실행되지 않습니다. 당신이 할 수있는,

jQuery(document.ready(function($) { 
    function mobileNav() { 
     var w = $(window).width(); 

     if (w < 879) { 
      $('.menu-item-has-children a i').click(function(e) { 
       e.preventDefault(); 
       $(this).parents('menu-item-has-children').children('ul').toggle(); 
       $(this).toggleClass('turned'); 
      }); 
     } 
    } 

    mobileNav(); 

    jQuery(window).resize(function($) { 
     mobileNav(); 
    }); 
}); 
+0

귀하의 백엔드가 모바일과 데스크탑에 대해 다른 마크 업을 생성하는지 궁금합니다. '$ ('. menu-item-has-children a i')가 둘 다 있는지 확인하십시오. – Shanimal

+0

shanimal에게 감사드립니다. 저는 확인했습니다. 그렇습니다. 두 가지 모두에 대해 동일한 마크 업입니다. jQuery는 내가 아는 한 모든 요소에 대한 마크 업을 변경하지 않는다. 의도는 상기 요소의 동작을 수정하는 것이다. –

답변

1

임 정확히 확인되지하지만 난 $(this).parents('menu-item-has-children').children('ul').toggle();

FWIW와 라인에 menu-item-has-children의 앞에 더 .이 없기 때문에이 작동하지 않는 이유는 생각 : 내 jQuery를은 다음과 같습니다 domReady에 대한 필요성을 없애고 크기 조정 기능을 제거하는 클릭 핸들러의 델리 게이트 (delegate) 구문을 사용하십시오. 왜냐하면 화면 크기를 조정할 때 실제로 어떤 동작도 실행하지 않기 때문입니다. .menu-item-has-children a i 노드를 클릭했을 때 어떤 일이 발생하는지 신경 써야합니다. 그래서 우리는 클릭 할 때마다 화면 크기를 확인할 수 있습니다.

jQuery(document).on('click', '.menu-item-has-children a i', function(e) { 
     var $ = jQuery; 
     var $this = $(this); 
     e.preventDefault(); 
     if (879 < $(window).width()) { 
      $this.parents('.menu-item-has-children').children('ul').toggle(); 
      $this.toggleClass('turned'); 
     } 
    }); 
+0

고마워요! 그것은 정말 잘 작동하는 것 같습니다. 내가 얻지 못하는 유일한 것, 그리고 아마도 이것은이 게시물의 관점을 넘어선 것입니다. 제가 작성한이 함수의 핵심은 모바일에서의 클릭에 대한 가시성을 만드는 것입니다 (이 작업을 수행함).하지만 CSS 호버를 사용하는 것입니다. 데스크톱에서 서브 네트워크를 볼 수있게합니다. –

+0

누나들 ... 나는 너무 일찍 "enter"했다. 따라서 문제는 토글 기능이 display : block 및 display : none 인라인을 토글하여 CSS 파일의 my : hover 요청을 무시합니다. 거기에 어떤 조언이 있니? 다시 한번 감사드립니다. –

+0

PPS - 누락 된 "." 그것을 StackOverflow로 옮겨 놓는 것은 오타였습니다. 내 실제 코드에서, 그것이 있어야 할 곳입니다. –