3

他の誰かがこれに遭遇し、私を啓発することができれば、私はこれが少し混乱していると思います...

jQuery を使用して 1 つのclickイベント リスナーをセットアップしましたが、これは正常に登録されますが、2 つ目は登録されませんが、2 つ目はtouchendイベントが登録されます。

$(document).on("click", ".date-button", ...

別の要素の 2 番目の同様のイベント リスナー:

$(document).on("click touchend", ".time.true", ...

が登録されないtouchendため、を使用する必要があります。click両方を使用したいclick touchendのですが、最初のリスナーでそれを行うと、動作が 2 回実行されます (クリックで 1 回、タッチエンドで 1 回)。

アップデート

問題は、「おそらく」 であまりにも多くのイベントを委任していたことにあることがわかりましdocumentclick2番目のリスナーに何かを読むように委任したとき、$("#times-popup").on("click", ".time.true", ...それは再び機能しました。

これはまだ、jQuery か iOS のどこかのバグだと思います... jQuery の可能性が高いですか、それとも、私が想定していないことをしているのですか?

4

1 に答える 1

1

iPhone では、イベント委任はクリック イベントに対して機能しません。マウスオーバーとマウスアウトでは正常に機能し、タッチイベントでは正常に機能しますが、クリックでは機能しません。

ただし... イベントのターゲットがリンクまたは入力フィールドの場合、イベント委任は機能します。

http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html

.date-buttonしたがって、1 つのアプローチは、要素をaor型に変更することinputです。または、ページに小さな CSS を追加すると、バグが修正される場合もあります。

.date-button {
    cursor: pointer;
}

参照: http://jimmybyrum.com/tests/eventdelegation.html

于 2013-01-08T17:59:30.087 に答える