19

ボタンとして機能するDivのセットがあります。これらのボタンには、iOS を除くすべてのブラウザーで機能する単純な jquery click() 関数があります。

例えば:

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

$('.button').click(function(){

   alert('hi');

});

これが iOS で機能しない理由はわかりません。明らかに、iOS には「クリック」がありません。

残念ながら、私はこれを自分でテストするための iPhone デバイスを持っていませんが、クリックしたいクライアントから多くの苦情を受けていますが、何も起こりません。

これを機能させるための鍵は何ですか?

4

5 に答える 5

37

Click ": 同じ要素で mousedown および mouseup イベントが発生したとき、または要素がキーボードによってアクティブ化されたときを意味します。

Jquery バグから、回避策があります。要素の CSS に追加"cursor: pointer"するだけで、クリック イベントが期待どおりに機能します。このJquery が Iosをクリックしてヘルプを表示していることもわかります

于 2012-05-14T05:42:33.367 に答える
2

マレクの答えに基づいて、これは私の見解です(少しクリーンアップされています):

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

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

標準化に関しては、業界にはまだ多くの作業が必要です…</p>

編集:

Androidフォンではうまくいきませんでした。より厳格なアプローチを取りました:

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

$('.clickable_element').on(pickclick, function(e) {
     // do something here
});
于 2016-04-23T20:56:24.523 に答える
0

これを使用できます:

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

別の解決策は、要素のカーソルをポインターに設定し、jQuery ライブおよびクリック イベントで動作することです。CSSで設定します。

于 2012-05-14T05:51:28.247 に答える