2013-04-05 2 views
1

jquery를 사용하여 다음과 같이 코드를 작성하는 방법을 배우고 싶습니다.jquery 첫 번째 터치에서만 preventdefault

$(".portfolio a").one("click", false); 

이 코드는 시각적 메뉴 링크의 hover 이벤트에 대한 것입니다. 첫 번째 터치에서 이어지는 링크를 막으려 고하므로 첫 번째 터치에서 마우스 오버 이벤트가 발생하고 두 번째 터치가 링크로 연결됩니다.

호버 클래스는

+0

당신이 [링크]로 봤어 (HTTP : //stackoverflow.com/questions/9696533/jquery-hover-event-on-a-tag-on-mobile-devices) – Vidhuran

+0

감사합니다 Vidhuran, 전 정말 inter 터치 전용 jquery에서 one-click-false (또는 preventdefault)와 동일한 기능이 있는지 보려면 ested를 사용합니다.이 경우에는 마치 호버링 문제에 대한 가장 직접적인 해결책이 될 것입니다 ... – laura

답변

0

오히려 :hover 의사 선택기를 사용보다는 .hover 클래스를 추가하는 것이 더 자연 수 있습니다 ... HREF 연결되어 있습니다. 그러면 다음을 수행 할 수 있습니다.

$(".portfolio a").one("click", function(e) { 
    e.preventDefault(); 
    $(this).addClass('hover'); 
}); 

다음 번 클릭은 정상적으로 작동합니다.

+0

Thanks jmar777 - 그래도 마우스 클릭에 영향을주는 것 같습니다. 터치 장치 동작에만 영향을 줄 수있는 솔루션을 찾고 있습니다 (원본 CSS 호버가 마우스에서 작동 함). – laura

+0

흠 ... 나는 이벤트만으로 차별화 할 수 있을지 확신하지 못합니다. 필자가 아는 한, 모바일 감지 로직을 결합하여 사용할 동작을 결정해야합니다. 이러한 종류의 문제를 해결하는 데 도움이되는 터치 이벤트에 대한 W3C 사양이 있지만 '마지막 전화'상태 인 것으로 나는 생각합니다. – jmar777

+0

그래, 정말 고마워. jmar777, 해결할 다른 접근법을 살펴볼 것이다! – laura

0
$(".portfolio a").one("click", false, function(event){ 

event.preventDefault(); 

};); 

보십시오이

+0

왜 '거짓'데이터 매개 변수입니까? – jmar777

+0

user2249066 코드에 넣었으므로 코드를 제거하지 않았습니다. – underscore

+0

그러나 그는 코드를 여러 번 편집하고 있습니다. ( – underscore

4
번 링크를 바인드 해제하기 전에 터치 동작에 대한

그냥 시험 :

if ("ontouchstart" in document.documentElement) { 
    $(".portfolio a").one("click", false, function(e){ 
    e.preventDefault(); 
    } 
} 

또는 그 반대의 경우도 마찬가지

$(".portfolio a").one("click", false, function(e){ 
    if ("ontouchstart" in document.documentElement) { 
    e.preventDefault(); 
    } 
} 
+2

고마워. 어제부터 터치 장치에서 제대로 작동하는 드롭 다운 메뉴를 얻는 방법과 모든 종류의 복잡한 솔루션을 본 적이 있습니다. 그런 다음 당신의 대답을 발견했습니다. –

관련 문제