0

오히려 나쁘게 작성된 반응 형 웹 사이트의 패치를 요청 받았으며 jQuery 클릭 이벤트 문제로 인해 어려움을 겪었습니다.jQuery Click 이벤트는 Landscape (iPhone)에서만 작동합니다.

풍경 모드에서는 iPhone에서 이벤트가 제대로 작동하지만 세로 모드에서는 아무 것도하지 않습니다. 여기

는 jQuery의 :

if (width <= 480) { 
    function menu(e) { 
     e.PreventDefault(); 
     $('#menu-item-93 .sub-menu').slideToggle('fast'); 
    } 

    $('.nav-cont').addEventListener('click', menu(e)); 
    $('.nav-cont').addEventListener('touchstart', menu(e)); 
} 

그리고 섹션은 header.php 파일에서 관련 이잖아

<nav id="main" class="main clearboth"> 
    <?php 
     wp_nav_menu(array( 
      'sort_column' => 'menu_order', 
      'theme_location' => 'primary', 
      'after'=>'<img src="'.template_url('images/button/link-445x68.png').'" class="show-480" />' 
     )); 
    ?> 
</nav> 
<div class="nav-cont"> 
    <div class="nav-text show-480">NAVIGATION</div> 
    <img class="nav-button show-480" src="<?php echo template_url('images/button/navigation-closed-nt-445x52.png');?>" /> 
</div> 

누구나 어떤 생각이 왜이 (내가 언급 했느냐, 이것은 워드 프레스 사이트입니다) 터치 이벤트는 가로 모드에서만 실행됩니까?

답변

0

이것은 결국 사이트에서 작업하는 구 개발청에서 남긴 여러 개의 javascript 파일을 통해 해결되었습니다. 이 셀렉터에서 여러 개의 클릭 핸들러 인스턴스가 서로 상반되는 것으로 나타났습니다. 나는 다른 사람들과 빵을 제거했다.

그것은 심지어 기본적인

$('.nav-cont').click(function() { 
}); 

이벤트 핸들러 작업을 위해 내가 원래하려는 방법으로 일했다.

+1

스스로 정리하지 않은 오래된 개발자는 싫어해야합니다. –

0

코드는 if (width <= 480) {으로 시작됩니다. 이것은 유효한 초상화 일 수 있지만 풍경이 아닌 것처럼 보입니다. 문제가 바로 발생합니다.

+0

끝에 오타를 입력 해 주셔서 감사합니다. 이제 필자는 가로 방향으로 말하도록 업데이트되었습니다. 'if (너비 <= 480) {'이 문제를 일으키지 않아야합니다. 이것은 모바일 레이아웃을 트리거하는 미디어 쿼리에 정의 된 바운더리와 동일합니다. –

+0

기본적으로 모바일 레이아웃에서는 javascript 만 실행 중이며 iphone은 제약 조건 내에서 올바르게 작동합니다. –

+0

하지만이 문제가 있는지보기 위해 폭 <= 480을 참 또는 1 == 1로 바꾸어 볼 수 있습니까? 그냥 방해가되지 않도록하십시오. – JSantos

0

이 라인 :

$('.nav-cont').addEventListener('click', menu(e)); 
$('.nav-cont').addEventListener('touchstart', menu(e)); 

이어야 :

$('.nav-cont').addEventListener('click', menu); 
$('.nav-cont').addEventListener('touchstart', menu); 

심지어 :

$('.nav-cont').on('click', menu); 
$('.nav-cont').on('touchstart', menu); 

현재 코드 이벤트 핸들러에 menu 함수 호출의 결과를 추가한다.

+0

도움 주셔서 감사합니다. 마이크,이 문제를 해결하지 못했습니다. 물론 내가 가지고있는 이벤트 처리기가 유효하지 않은 경우 가로 모드에서도 실행되지 않습니다. 또는 그 문제에 대해 크기가 조정 된 데스크탑 브라우저에서. –

+0

더 많은 코드를 보지 않고 말하기가 어렵습니다. 다른 조건에 바인딩 된 다른 연결된 이벤트 처리기가있을 수 있습니다. 예를 들어, 다른 인스턴스에 첨부 된 동일한 버튼에 대한'addEventListener'가있을 수 있습니까? 또한, 나는'addEventListener'가 그런 jQuery 객체에 사용 된 것을 본 적이 없다. '$ ('. nav-cont'). on ('click', menu);'? –

관련 문제