3

できるのが理想$(document.body).on("tap", "#myElement", this.eventHandler);

しかし、jQuery はまだそれを行っていません。

非常に多くのライブラリが表示されます -- https://github.com/bebraw/jswiki/wiki/Touch。そのページには長いリストがあります。

それらはすべて、昔ながらのイベントリスニングを使用しているようです。など$("#element").touchLibraryThingy(); $("#element").bind("tap")。に相当しaddEventListenerます。

これは ID (Sorta) には最適ですが、50 個のリスト項目があり、すべてにイベントが含まれている場合、古い Android の誰かに 50 個のイベント リスナーを持たせたくありません。パフォーマンス上の理由から!

完了したイベント委任を使用するライブラリを知っている人はいますか?

このスタックオーバーフローの質問は似ていますが、真実にはなりません - jQuery の .on() を拡張してモバイル タッチ イベントを操作する

4

2 に答える 2

1

さらに良いことに、jQuery Mobileカスタムビルダーを使用すると、モバイルイベントのみを選択して最新のタッチコードを取得できます。これにより、上記の例よりも改善されています。

http://jquerymobile.com/download-builder/

于 2012-11-26T00:51:24.450 に答える
1

jQuery の .on() を拡張してモバイル タッチ イベントを操作するという投稿で言及されているブロブが、実際にそのトリックを実行しているように見えます...ほぼ。

ライブラリにリンク!https://github.com/jvduf/jquery-mobile-events/blob/master/jquery.mobile.events.js

デスクトップの落とし穴 「タップ」は、デフォルトを妨げないようです。Web アプリで奇妙なスクロール動作と途切れ途切れのメニュー アニメーションが発生しました。

これを修正するために、アプリの名前空間内にグローバル プロパティを作成しました。

var R = window.R = window.R || {};
R.touchEvent = ('ontouchstart' in window') ? "tap" : "click";
window.$body = $(document.body);

次に、すべてのイベントリスナーがこれを行います:

$body.on(R.touchEvent, ".myHellaLongListItems", this.eventHandler);

終わり!これで、私たちは皆、本当に素晴らしいモバイル Web サイトを持つことができます。

于 2012-10-26T04:28:08.990 に答える