[JQUERY] 어떻게 바인드 'touchstart'모두에 이벤트가 아니라 응답을 '클릭'하는?
JQUERY어떻게 바인드 'touchstart'모두에 이벤트가 아니라 응답을 '클릭'하는?
해결법
-
1.업데이트 : 대신 마우스 및 터치 사이의 선택의 "포인터"이벤트에 바인딩 할 수있는 jQuery를 포인터 이벤트 Polyfill 프로젝트를 확인하세요.
업데이트 : 대신 마우스 및 터치 사이의 선택의 "포인터"이벤트에 바인딩 할 수있는 jQuery를 포인터 이벤트 Polyfill 프로젝트를 확인하세요.
기능은 100ms의 당 또는 이렇게 한 번 발사 있도록 바인딩 모두에 있지만, 플래그를합니다.
var flag = false; $thing.bind('touchstart click', function(){ if (!flag) { flag = true; setTimeout(function(){ flag = false; }, 100); // do something } return false });
-
2.이것은 내가 "만들기"는 GhostClick 및 구현 FastClick을 취하는 것이 수정이다. 자신에 시도하고 당신을 위해 일했다면 알려 주시기.
이것은 내가 "만들기"는 GhostClick 및 구현 FastClick을 취하는 것이 수정이다. 자신에 시도하고 당신을 위해 일했다면 알려 주시기.
$(document).on('touchstart click', '.myBtn', function(event){ if(event.handled === false) return event.stopPropagation(); event.preventDefault(); event.handled = true; // Do your magic here });
-
3.당신이 뭔가를 시도 할 수 있습니다 :
당신이 뭔가를 시도 할 수 있습니다 :
var clickEventType=((document.ontouchstart!==null)?'click':'touchstart'); $("#mylink").bind(clickEventType, myClickHandler);
-
4.보통이는 잘 작동합니다 :
보통이는 잘 작동합니다 :
$('#buttonId').on('touchstart click', function(e){ e.stopPropagation(); e.preventDefault(); //your code here });
-
5.그냥 반환 거짓을 추가; 온 ( "클릭 touchstart") 이벤트 함수의 끝에서이 문제를 해결할 수 있습니다.
그냥 반환 거짓을 추가; 온 ( "클릭 touchstart") 이벤트 함수의 끝에서이 문제를 해결할 수 있습니다.
$(this).on("click touchstart", function() { // Do things return false; });
CSTE 연구진에 jQuery를 문서에서 ()
-
6.나는 비슷한 일을했다. 여기에 나를 위해 일한 무엇의 단순화 된 버전입니다. 터치 이벤트가 감지되면 바인딩 클릭을 제거합니다.
나는 비슷한 일을했다. 여기에 나를 위해 일한 무엇의 단순화 된 버전입니다. 터치 이벤트가 감지되면 바인딩 클릭을 제거합니다.
$thing.on('touchstart click', function(event){ if (event.type == "touchstart") $(this).off('click'); //your code here });
내가 바인딩 클릭을 제거하고 요소에 대한 기본 동작을 방지 클릭 이벤트를 바인딩했다, 그래서 내 경우에는 클릭 이벤트는 요소에 결합했다.
$thing.on('touchstart click', function(event){ if (event.type == "touchstart") $(this).off('click').on('click', function(e){ e.preventDefault(); }); //your code here });
-
7.나는 다음과 같은 방법으로 성공했다.
나는 다음과 같은 방법으로 성공했다.
쉬워요...
$(this).on('touchstart click', function(e){ e.preventDefault(); //do your stuff here });
-
8.나는 가장 좋은 방법은 사용 지금 생각 :
나는 가장 좋은 방법은 사용 지금 생각 :
$('#object').on('touchend mouseup', function () { });
예
$ ( '# 클릭'() '와 mouseUp', 기능 () {경고 () '이벤트가 감지';})에.; $ ( '# 터치') ( 'touchend', 기능 () {경고 () '이벤트가 감지';})에.; <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> script> 나 H1> 클릭
H1> 나 터치
EDIT (2017)
2017 년 현재로, 브라우저는 크롬으로 시작을 클릭 요청에 탭 이벤트에 의해 발생하는 지연을 제거함으로써 모두 마우스와 터치 호환성 ( '클릭') 클릭 이벤트 CSTE 연구진을 향한 단계를하고 있습니다.
결론이 리드는 클릭 이벤트를 사용하여 다시 되 돌리는 것은 전진 가장 간단한 해결책이 될 것이다.
난 아직이 실제 있는지 확인하기 위해 테스트 어떤 크로스 브라우저를하지 않은.
-
9.일반적으로 당신은 기본 터치 및 비 터치 (클릭) API를 혼합하고 싶지 않아요. 당신은 터치의 세계로 이동하면 그것은 쉽게 터치 관련 기능 만 처리합니다. 다음은 사용자가 원하는 것을 할 것입니다 일부 의사 코드입니다.
일반적으로 당신은 기본 터치 및 비 터치 (클릭) API를 혼합하고 싶지 않아요. 당신은 터치의 세계로 이동하면 그것은 쉽게 터치 관련 기능 만 처리합니다. 다음은 사용자가 원하는 것을 할 것입니다 일부 의사 코드입니다.
당신이하는 TouchMove 이벤트에 연결하고 위치를 추적하는 경우에 당신은 몸짓과 이것 저것을 감지 할 doTouchLogic 기능에 더 많은 항목을 추가 할 수 있습니다.
var touchStartTime; var touchStartLocation; var touchEndTime; var touchEndLocation; $thing.bind('touchstart'), function() { var d = new Date(); touchStartTime = d.getTime(); touchStartLocation = mouse.location(x,y); }); $thing.bind('touchend'), function() { var d = new Date(); touchEndTime= d.getTime(); touchEndLocation= mouse.location(x,y); doTouchLogic(); }); function doTouchLogic() { var distance = touchEndLocation - touchStartLocation; var duration = touchEndTime - touchStartTime; if (duration <= 100ms && distance <= 10px) { // Person tapped their finger (do click/tap stuff here) } if (duration > 100ms && distance <= 10px) { // Person pressed their finger (not a quick tap) } if (duration <= 100ms && distance > 10px) { // Person flicked their finger } if (duration > 100ms && distance > 10px) { // Person dragged their finger } }
-
10.https://developers.google.com/mobile/articles/fast_buttons 구글에서 빠른 버튼과 CHOST 클릭 확인
https://developers.google.com/mobile/articles/fast_buttons 구글에서 빠른 버튼과 CHOST 클릭 확인
-
11.음 ...이 모든 슈퍼 복잡합니다.
음 ...이 모든 슈퍼 복잡합니다.
당신이 모더 나이저이 있다면, 그것은 생각할 필요도 없다.
ev = Modernizr.touch ? 'touchstart' : 'click'; $('#menu').on(ev, '[href="#open-menu"]', function(){ //winning });
-
12.더 나은 유지 관리를위한 또 다른 구현입니다. 그러나,이 기술은 또한 event.stopPropagation을 할 것입니다 (). 클릭은 100ms에 대한 클릭 한 것을 다른 요소에 포착되지 않습니다.
더 나은 유지 관리를위한 또 다른 구현입니다. 그러나,이 기술은 또한 event.stopPropagation을 할 것입니다 (). 클릭은 100ms에 대한 클릭 한 것을 다른 요소에 포착되지 않습니다.
var clickObject = { flag: false, isAlreadyClicked: function () { var wasClicked = clickObject.flag; clickObject.flag = true; setTimeout(function () { clickObject.flag = false; }, 100); return wasClicked; } }; $("#myButton").bind("click touchstart", function (event) { if (!clickObject.isAlreadyClicked()) { ... } }
-
13.그냥 문서의 목적을 위해, 여기에 내가 생각할 수있는 것이 모바일 솔루션에 바탕 화면 / 탭에서 가장 빠른 / 가장 반응 클릭에 대해 무슨 짓을했는지입니다 :
그냥 문서의 목적을 위해, 여기에 내가 생각할 수있는 것이 모바일 솔루션에 바탕 화면 / 탭에서 가장 빠른 / 가장 반응 클릭에 대해 무슨 짓을했는지입니다 :
나는 브라우저가 지원하는 이벤트를 터치 할 때마다, touchstart 나의 모든 클릭 이벤트를 대체, 수정 하나와 기능을 jQuery의 교체.
$.fn.extend({ _on: (function(){ return $.fn.on; })() }); $.fn.extend({ on: (function(){ var isTouchSupported = 'ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch; return function( types, selector, data, fn, one ) { if (typeof types == 'string' && isTouchSupported && !(types.match(/touch/gi))) types = types.replace(/click/gi, 'touchstart'); return this._on( types, selector, data, fn); }; }()), });
이상 사용 전에, 같은 동일한 것입니다 :
$('#my-button').on('click', function(){ /* ... */ });
사용할 수 그러나 그것은하지 않을 때 클릭 touchstart을 사용합니다. 필요한 어떤 종류의 지연 없습니다 : D
-
14.난 그냥 ontouchstart 이제까지 트리거 된 경우 암기 아이디어를 내놓았다. 이 경우 우리는 그것을 지원하는 장치에 있으며 온 클릭 이벤트를 무시해야합니다. ontouchstart 항상 온 클릭하기 전에 트리거해야하기 때문에,이를 사용하고 있습니다 :
난 그냥 ontouchstart 이제까지 트리거 된 경우 암기 아이디어를 내놓았다. 이 경우 우리는 그것을 지원하는 장치에 있으며 온 클릭 이벤트를 무시해야합니다. ontouchstart 항상 온 클릭하기 전에 트리거해야하기 때문에,이를 사용하고 있습니다 :
'JQUERY' 카테고리의 다른 글
[JQUERY] $ 아약스 오류가 타임 아웃의 경우 결정 (0) | 2020.10.04 |
---|---|
[JQUERY] jQuery를에 함수를 5 초마다 호출하는 가장 쉬운 방법은 무엇입니까? [복제] (0) | 2020.10.04 |
[JQUERY] 어떻게 AJAX 요청 주기적으로 해고? (0) | 2020.10.04 |
[JQUERY] JQuery와 .each () 뒤로 (0) | 2020.10.04 |
[JQUERY] navigator.geolocation.getCurrentPosition 가끔 가끔 작동하지 않습니다 (0) | 2020.10.04 |