私は人々が彼らのページに含めているJavascriptを持っています。私のJavascriptには、独自の名前空間に分割され、グローバル変数(ただし、「$」または「jQuery」の2つのデフォルト変数の1つではない)を介して参照されるバージョンのjQuery(簡単に参照できるように1.8)があります。 。これにより、ユーザーは自分のページにjQueryを含めることができ、関数の内部で実行している作業に干渉することはありません。
つまり、jQueryがすでに含まれている1つのページ(1.4)があり、ユーザーと私のコードの両方が要素の「クリック」イベントをリッスンしていて、それらが最初に実行されることを除いて、すべてが正常に機能します。 falseを返すと、jQueryは伝播を停止し、イベントがトリガーされることはありません。私は自分のイベントを最初に行う必要があります。onClick
ユーザーは私の機能がまだ機能することを期待しています。
これで、jQueryはオブジェクトを介して内部でイベントの独自の順序を維持することがわかりました。これにより、_data()
既存のイベントのバインドを解除し、イベントをバインドしてから、既存のイベントを再バインドできますが、これはjQueryのそのインスタンスを介してバインドされたオブジェクトにのみ適用されます。競合がユーザー自身のバージョンのjQueryによって引き起こされたことを期待して、jQueryオブジェクトを盲目的に探すだけではありません。結局のところ、ユーザーがjQueryを介さずにイベントをバインドするとどうなりますか?ページ内の既存のjQueryオブジェクトを操作しようとするのは良い解決策ではありません。
ブラウザによっては、addEventListener
/removeEventListener
またはattachEvent
/を使用していることを私は知っていdetachEvent
ます。すでに追加されているイベントのリストを取得できれば、希望の順序で再バインドできますが、その方法がわかりません。ChromeでDOMを調べてみると、onclick
どこにもバインドされていないことがわかります(オブジェクトでも、ウィンドウでもドキュメントでもありません)。
私は、jQueryがリスニングをバインドする場所を正確に把握しようと非常に時間を費やしています。独自のイベントの順序を制御できるようにするには、jQueryはどこかで包括的にリッスンしてから、独自の関数を起動する必要がありますか?それがどこで行われているのかを理解できれば、自分のイベントが常に最初になるようにする方法についての洞察を得ることができます。あるいは、Googleで見つけられなかったJavascriptAPIがあるかもしれません。
助言がありますか?