Как использовать jQuery для события click в веб-приложении iPhone
Когда я использую jQuery для простого события click, он работает только для ссылок. Есть ли способ заставить его работать на промежутки и т.д.:
$("span.clicked").live("click", function(e){alert("span clicked!")});
$("a.clicked").live("click", function(e){alert("link clicked!")});
SPAN работает в Safari, но не в Mobile Safari (на iPhone или iPad), тогда как тег A работает в обоих.
Ответы
Ответ 1
Вам нужно прослушать события "touchstart" и "touchhend". Добавьте слушателей с помощью jQuery...
$('span').bind( "touchstart", function(e){alert('Span Clicked!')} );
Возможно, вы захотите прослушать сенсорный старт и коснуться, чтобы вы могли убедиться, что элемент, который был нацелен при касании пальца, такой же, как и элемент, который был удален при удалении пальца.
Я уверен, что, возможно, есть лучший способ сделать это, но это должно работать:)
Изменить: есть лучший способ! См. fooobar.com/questions/63854/...
Ответ 2
Я тоже боролся с этим. После множества игр и попыток выяснить проблему, я столкнулся с простым решением.
Если вы установите элемент cursor
на pointer
, он волшебным образом снова работает с Jquery live и событием click. Это можно просто установить глобально в CSS.
Ответ 3
Фактически вам не нужно использовать событие touchstart или touchhend, если тег span (или что-то другое, кроме тега 'a) имеет свойство css:
cursor:pointer
клик зарегистрируется
Ответ 4
Вы также можете уговорить браузер генерировать события щелчка, добавив пустой атрибут onclick. Для подхода с поясом и привязкой в случае, если любой подход перестанет работать в любом данном обновлении iOS, вы можете использовать что-то вроде этого:
$("span.clicked").live("click", function(e){alert("span clicked!")})
.attr('onclick','')
.css('cursor','pointer');
(при условии, что у вас нет реальных атрибутов onclick, которые вы не против уничтожения)
Ответ 5
Я пробовал все, и ни один из трюков не работал. Оказалось, что я не смог получить события кликов, потому что у меня был элемент видео под моим img. видео элементы, по-видимому, едят события щелчка.
Ответ 6
Вы можете добавить пустой атрибут onclick
, например:
<span onclick=''>Touch or Click Me</span>
jQuery('span').live('click', function() { alert('foo'); });