Как заставить мою функцию «щелкнуть» на iOS

У меня есть набор Div, которые действуют как кнопки. Эти кнопки имеют простую функцию jquery click (), которая работает во всех браузерах, кроме iOS.

Например:

<code><div class="button">click me</div>
</code>

а также

<code>$('.button').click(function(){

   alert('hi');

});
</code>

Я не уверен, почему это не работает на iOS - очевидно, что здесь нет «нажатия». в iOS

К сожалению, у меня нет устройства iphone, чтобы проверить это самостоятельно, но я получаю много жалоб от своих клиентов, которые хотят щелкнуть по кнопкам, и ничего не происходит.

Что является ключом к тому, чтобы заставить это работать?

Ответы на вопрос(5)

Нажмите & quot ;: означает, что на одном и том же элементе происходят события mousedown и mouseup ИЛИ элемент активируется с клавиатуры.

отJquery Bug, есть работа вокруг, просто добавь"cursor: pointer" элементу CSS, и событие click будет работать как положено. и вы даже можете увидеть этоJquery нажмите на Ios за помощью

Ответ Марека это мое мнение (оно немного очищено):

var ua = navigator.userAgent, 
pickclick = (ua.match(/iPad/i) || ua.match(/iPhone/)) ? "touchstart" : "click";

$('.clickable_element').on(pickclick, function(e) {
     // do something here
});

Впереди у промышленности еще много работы, когда дело доходит до стандартов & # x2026;

EDIT:

Не работает на телефонах Android. Взял более жесткий подход:

if (document.documentElement.clientWidth > 1025) { pickclick = 'click' }
if (document.documentElement.clientWidth < 1025) { pickclick = 'touchstart' }

$('.clickable_element').on(pickclick, function(e) {
     // do something here
});

Ответ Марека, который адаптирует событие к устройству для запуска функции, вот код, который вынуждает запускать щелчок на устройствах iOS, где сначала происходит событие touchstart:

var UA = navigator.userAgent,
iOS = !!(UA.match(/iPad|iPhone/i));

if (iOS) {
   $(document).on('touchstart', function (e) {
       e.target.click();
   });
}

Я попытался использовать «курсор: указатель», onclick = & quot; и даже преобразовать элемент в тег привязки.

То, что я сделал, чтобы это работало, - это связал событие touchstart с событием click. Чтобы это работало на всех платформах, мне нужно было поднять такой уродливый пользовательский интерфейс:

var ua = navigator.userAgent,
event = (ua.match(/iPad/i) || ua.match(/iPhone/)) ? "touchstart" : "click";

jQuery("body").on(event, '.clickable_element', function(e) {
    // do something here
});

$('button').bind( "touchstart", function(){
    alert('hi');
});

Другое решение состоит в том, чтобы установить курсор элемента на указатель, и он будет работать с событием jQuery live и click. Установите это в CSS.

ВАШ ОТВЕТ НА ВОПРОС