質問

jQueryと同じ方法論を使用してJavaScriptでイベントを作成しようとしています - 誰もがjQueryをどうやって知っていますか?

私の推論は、Raw JavaScriptを使用することです。

var myEvent = new CustomEvent("userLogin", eventProperties);
.

...は、Chromeや他のブラウザのようなDOMレベル3をサポートしていないため、実際にはAndroidネイティブブラウザで動作しません。

しかし、jQuery Androidの株式ブラウザで作業し、単に使用する:

$.event.trigger('MyEvent');
.

私の質問は、この背後にあるコードは何ですか?私はjQueryのソースコードを行うことによってそれを見つけようとしましたその周りに頭を出すことはできません!

役に立ちましたか?

解決

ここでの基本的なことはこれです:イベントハンドラをjQueryでフックすると、jquery をDOM要素に直接追加しません。代わりに、jQueryはDOM要素で独自のハンドラをフックしています(まだ1つ持っていない場合)。イベントが発生すると、jQueryはイベントのjQuery登録ハンドラのリストを調べ、順番にそれらを発射します。 (これにはいくつかの理由があります。最初はそれは主にIEのメモリリークと、すなわちハンドラを1つの順序で発射し、他の誰もが異なる順序で任意の順序で発砲した。

(あなたは私がこれを持っているのか見ることができるかもしれません...)

SO triggerを使用すると、jQueryは合成イベントをDOM要素に送信しますが、その合成イベントにが機能することはありません。それはjQueryを通して直接登録したハンドラを呼び出します。実際、それがそれが完了したことを知っているようにフラグを設定します。 。

現在の非圧縮jQueryファイルの4,464行目で始まるすべての栄光でこれを見ることができます。

で基本的にjQueryの独自のPUB /サブシステムを構築し、ブラウザイベントシステムを入力として使用します。だからカスタムイベントは通常ブラウザに全く話す必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top