2012-10-02 2 views
3

Chrome에서 완벽하게 작동하도록 노력하고있는 것 - Android 4.1 하지만 iOS에서는 꽤 실패합니다.모바일 Safari preventDefault()가 작동하지 않습니까? 안드로이드는 잘 작동합니다.

$(document).on('mouseenter touchend','[id*=mmlink]', function (e) { 
    var $btn = $(this); 
    var href = $btn.attr('href'); 
    var count = ($btn.data('click_count') || 0) + 1; 

    $btn.data('click_count', count); 
    if (count == 1) { 
     $btn.click(function(v) { 
      v.preventDefault(); 
     }); 
    } else { 
     document.location.href = href; 
    } 
}); 

나는 milonic 메뉴를 사용하여 하위 메뉴를 생성합니다. 하위 메뉴를 선택하려면 .on()을 사용해야합니다.

테스트 페이지 : 내가 거기에 생각하고 http://www.wolfbariatrics.com/mmtest/index.htm

은 아이폰 OS에서 일어나는 또 다른 이벤트입니다. 사파리를위한 원격 디버거는 중단 점을 설정할 수있게 해주지 만, 단계적으로 또는 그 이상으로 앵커 태그를 따라갑니다.

나는 모든 이벤트를 앵커 태그에서 완전히 제거하고 href하지만 여전히 아무것도 작동하지 않았다.

+0

테스트 페이지가 작동하지 않습니다. –

+0

jQuery를 사용하고 있습니까? 큰 차이를 만듭니다. –

+0

예 jquery를 사용하고 있습니다. http://jsfiddle.net/8AEHP/32/ 모바일 브라우저 테스트에 문제가 있습니다 ... 내 테스트 링크가 여러 브라우저와 위치에서 작동합니다. – Planet95

답변

2

당신은에서는 event.preventDefault에 대해에 StackOverflow에이 주제를 확인하고 false를 반환 할 수 있습니다 : 기본적으로

event.preventDefault() vs. return false

을 :. "는 jQuery의로 preventDefault 실행에서 다른 투수를 방지하지 않습니다 즉 stopImmediatePropagation가 무엇인지입니다. "

"는 jQuery를 이벤트 핸들러 내에서 false를 반환 효과적으로 전달 jQuery.Event 개체 모두 e.preventDefault e.stopPropagation 및 전화와 동일하다.

e.preventDefault()를 것 e.stopPropagation()은 이벤트가 버블 링되는 것을 방지하고 false를 반환합니다.이 동작은 일반 (비 jQuery) 이벤트 핸들러와 다릅니다. 주목할 만하게는 false가 반환되지 않습니다. 이벤트가 버블 링되는 것을 막으십시오. "

+0

stopImmediatePropagation()을 언급해야합니다. false를 반환; 중지(); 앵커 태그에서 모든 이벤트를 제거해도 아무 효과가 없습니다. 원격 디버거에서 영향을받는 앵커 태그를 볼 수는 있지만 iOS의 결과에는 영향을 미치지 않습니다. 안드로이드에서 잘 작동합니다. – Planet95

+0

좀 더 자세히 살펴 보겠습니다. –

+0

모바일 Safari에서 사용할 수있는 페이지를 설정할 수 있습니까? 바이올린은 잘 작동하지 않습니다. –

관련 문제