ページに異なるインスタンス (同じバージョンであっても) がある場合は、特に注意する必要があります。たとえば、jQuery191
データ (.data(...)
またはイベント リスナー)を持つ要素を削除した場合など、予期しない動作が発生し、メモリ リークが発生する可能性があるためです。これで保存されjQuery162
たページは、ページをリロードするまでメモリに残り、その逆も同様です。
しかし、あなたの質問に戻ります。お勧めしませんが、イベントを 2 倍にすることができます (両方のバージョンでトリガーします)。このアプローチの問題は、すべてが遅くなることです。もう 1 つの問題は、2 つのバブリング フェーズがあることです。そのため、イベントを防止しても、そのイベントjQuery191
は引き続き実行されjQuery162
、その逆も実行されます。
したがって、それはあなたにとって有効な解決策かもしれませんが、事態を悪化させる可能性もあります. したがって、このソリューションが使用できるものであるかどうかを自分で確認する必要があります。おそらく、ダブリング パーツの 1 つを削除することもできます。
(function() {
//keep the original functions
var trigger191 = jQuery191.fn.trigger;
var trigger162 = jQuery162.fn.trigger;
jQuery191.fn.trigger = function( evt ) {
trigger191.apply(this,arguments); //call orginal function
//only double certain events
if( evt == "my-custom-event" ) {
var resultset162 = jQuery162(jQuery191.makeArray( this ));//create a ne result set of the 162 version
trigger162.apply(resultset162,arguments); //call the original function of 162 to avoid an endless loop
}
};
jQuery162.fn.trigger = function(evt) {
trigger162.apply(this,arguments); //call orginal function
//only double certain events
if( evt == "my-custom-event" ) {
var resultset191 = jQuery191(trigger162.makeArray( this ));
trigger191.apply(resultset191,arguments); //call the ofiginal function of 191 to avoid an endless loop
}
};
})();
(コードがそのように機能することを願っています。うまくいくはずですが、今はテストできません)