jQuery如何触发带额外参数的click事件,原生JS如何实现同款功能
纯JavaScript实现带自定义参数触发click事件的方案探讨
在jQuery中你可以通过如下方式轻松实现该需求:
// 带参数触发click事件 jQuery(domElement).trigger( 'click', [ additionalParameters ] ); // 监听click事件并接收参数 jQuery( domElement ).on( 'click', function( event, parameters ) { event.stopImmediatePropagation(); }
那么使用纯JavaScript该如何实现呢?
我们无法直接使用new CustomEvent,因为它不支持将click作为事件类型传入;也无法使用new MouseEvent,因为它不像CustomEvent那样支持传递自定义参数。
我们可以尝试如下方案:
// 带参数触发click事件 domElement.addEventListener("click", function(e) { var event = new CustomEvent("fakeClick", {'detail': { custom_info: 10, custom_property: 20 }}); this.dispatchEvent(event); }); // 监听自定义事件接收参数 domElement.addEventListener('fakeClick', function(event) { var parameters = event.detail; event.stopImmediatePropagation(); });
但该方案存在问题:调用stopImmediatePropagation只会作用于我们自定义的fakeClick事件,无法作用到原生的click事件上,不符合我们的需求。
jQuery是如何实现这一能力的?应该存在对应的纯JavaScript实现方法。
补充:有用户提及了另一篇不相关的帖子,我实际想了解的是jQuery的实现逻辑。
内容的提问来源于stack exchange,提问作者gidiwe2427
相关产品推荐
相关产品推荐

