如果您在页面上有不同的实例(即使是相同的版本),您真的应该小心,因为这可能会导致意外行为并可能导致内存泄漏,例如,如果您删除jQuery191
具有数据的元素(.data(...)
或事件侦听器)与jQuery162
此一起存储的内容将保留在内存中,直到您重新加载页面,反之亦然。
但回到你的问题。我不推荐它,但您可以将事件加倍(使用两个版本触发它)。这种方法的问题是它会减慢一切。另一个问题是你有两个冒泡阶段。因此,如果您阻止其中的事件,jQuery191
它仍将被执行,jQuery162
反之亦然。
所以它可能是一个适合你的解决方案,但它也可能使事情变得更糟。因此,您需要检查自己是否可以使用此解决方案。可能您也可以删除其中一个加倍部分。
(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
}
};
})();
(我希望代码可以这样工作。我很确定它应该可以工作,但我现在无法测试它)