触发不同实例设置的 jQuery 自定义事件
Trigger a jQuery custom event set by different instance
有没有办法触发由不同的jQuery实例设置的自定义事件? 例如:
加载版本 1.9.1...jQuery191(document).on('customEvent', function () {console.log('Callback fired.')});加载版本 1.6.2 并设置无冲突...jQuery162(document).trigger('customEvent');
虽然不建议加载多个版本的库,但一个简单的用例是一个插件,如果当前实例低于预期,它会拉入特定版本的 jQuery。 有什么建议吗?
如果页面上有不同的实例(即使版本相同),您应该非常小心,因为这可能会导致意外行为并可能导致内存泄漏,例如,如果您删除具有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
}
};
})();
(我希望代码以这种方式工作。我很确定它应该可以工作,但我现在无法测试它)
相关文章:
- jQuery自定义验证比较多个输入的序列
- jquery自定义事件混淆
- 无法使用jQuery自定义内容滚动条将自定义滚动条添加到iframe
- HTML/JQuery 自定义表单
- 试图使一个事件依赖于另一个事件,并使用jquery自定义事件传递数据
- jQuery自定义验证只显示最后一个字段的错误
- 带有prev和next的jquery自定义循环插件
- 如何解决jquery自定义定时器问题
- jQuery自定义滚动条插件没有't使用水平滚动进行更新:true
- jQuery自定义模板工作不正常
- jQuery 自定义输入触发器复选框
- 使用 Jquery 自定义按钮和滑块(大小、位置、标题大小)
- 等待 Google Geocoder 会产生 jquery 自定义验证方法
- 触发不同实例设置的 jQuery 自定义事件
- jQuery 自定义内容滚动器在引导表响应式上不起作用
- JQuery 自定义警报框自动运行
- jQuery 自定义事件在全局范围内工作,但在对象之间不起作用
- Joomla 中的 jquery 自定义插件不起作用
- 无法识别 JQuery 自定义插件函数
- JQuery 自定义灯箱 - 不透明度淡入淡出