Есть ли способ удалить щелчок на мобильных устройствах Touch Touch?

При просмотре веб-сайта на мобильном устройстве (iPad, Galaxy Tab) всегда происходит отставание, когда я нажимаю элемент (регулярная ссылка или что-то еще, что можно сделать с помощью javascript / jquery).

Читая онлайн, я узнал, что браузер использует touchstart, за которым следуют события touchhend, а затем запускает обычный клик. Есть ли способ получить более отзывчивый ответ и удалить событие click, которое задерживается? Может быть, с помощью javascript или что-то еще?

Если вы пишете веб-страницу самостоятельно, вы можете зарегистрировать слушателя для touchstart и коснуться и запустить код onclick непосредственно с сенсорного конца без каких-либо задержек.

Если вы не будете обрабатывать событие на ощупь, браузер отправит (с некоторым запаздыванием) событие click для элемента

Взгляните на это описание из Google, чтобы создать «быстрые кнопки»: http://code.google.com/intl/de-DE/mobile/articles/fast_buttons.html.

Адаптированный из библиотеки Мэтта ( https://stackoverflow.com/a/9370637/1491212 ) сам адаптировался из кода Google, я написал плагин jQuery.

Используйте так: $('mySelector').fastClick(handler);

 (function($){ var clickbuster = { preventGhostClick: function(x, y) { clickbuster.coordinates.push(x, y); window.setTimeout(clickbuster.pop, 2500); }, pop: function() { clickbuster.coordinates.splice(0, 2); }, onClick: function(event) { for (var i = 0; i < clickbuster.coordinates.length; i += 2) { var x = clickbuster.coordinates[i]; var y = clickbuster.coordinates[i + 1]; if (Math.abs(event.clientX - x) < 25 && Math.abs(event.clientY - y) < 25) { event.stopPropagation(); event.preventDefault(); } } } }; var methods = { init: function(handler){ return this.each(function() { var $this = $(this), data = $this.data('fastClick'); if(!data){ this.addEventListener('touchstart', methods.handleEvent, false); this.addEventListener('click', methods.handleEvent, false); $this.data('fastClick', { target: $this, handler: handler }); } }); }, handleEvent:function(event) { switch (event.type) { case 'touchstart': $(this).fastClick('onTouchStart',event); break; case 'touchmove': $(this).fastClick('onTouchMove',event); break; case 'touchend': $(this).fastClick('onClick',event); break; case 'click': $(this).fastClick('onClick',event); break; } }, onTouchStart: function(event) { event.stopPropagation(); this[0].addEventListener('touchend', methods.handleEvent, false); var _this = this; document.body.addEventListener('touchmove', function(event){ methods.handleEvent.apply(_this,[event]); }, false); $(this).data('fastClick').startX = event.touches[0].clientX; $(this).data('fastClick').startY = event.touches[0].clientY; }, onTouchMove: function(event) { if (Math.abs(event.touches[0].clientX - this.data('fastClick').startX) > 10 || Math.abs(event.touches[0].clientY - this.data('fastClick').startY) > 10) { this.fastClick('reset'); } }, onClick: function(event) { event.stopPropagation(); $(this).fastClick('reset'); $(this).data('fastClick').handler.call(this,event); if (event.type == 'touchend') { clickbuster.preventGhostClick($(this).data('fastClick').startX, $(this).data('fastClick').startY); } }, reset: function() { this[0].removeEventListener('touchend', methods.handleEvent, false); document.body.removeEventListener('touchmove', methods.handleEvent, false); } } $.fn.fastClick = function(method) { if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if ( typeof method === 'object' || typeof method === 'function' || !method) { return methods.init.apply(this, arguments); } else { $.error('Method ' + method + ' does not exist on jQuery.hScroll'); } } clickbuster.coordinates = []; document.addEventListener('click', clickbuster.onClick, true); })(jQuery); 

Я использую обнаружение, если устройство поддерживает сенсорный, как модернизатор. Я заполняю var, называемый touchClick с опциями 'click' или 'touchend' оснований на исход, если это сенсорное устройство или нет. В jquery я просто звоню:

  $('element').on(touchClick, function(e){ //do something }); 

Он имеет очень небольшую площадь.