Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jQuery事件创建DOM事件_Javascript_Jquery_Events_Jquery Events - Fatal编程技术网

Javascript 从jQuery事件创建DOM事件

Javascript 从jQuery事件创建DOM事件,javascript,jquery,events,jquery-events,Javascript,Jquery,Events,Jquery Events,我正在使用一个触发jQuery事件的第三方库,我正在使用另一个侦听DOM事件的第三方库 我需要把这两个连接起来!我在想这样做: $(el).on('change', function (e) { if (e.originalEvent) return; // already a DOM event el.dispatchEvent(e.makeDOMEvent()); }); 显然jQuery没有makedoEvent()函数。。。但是有没有类似的方法呢?我在这里回答我自己的问

我正在使用一个触发jQuery事件的第三方库,我正在使用另一个侦听DOM事件的第三方库

我需要把这两个连接起来!我在想这样做:

$(el).on('change', function (e) {
    if (e.originalEvent) return; // already a DOM event
    el.dispatchEvent(e.makeDOMEvent());
});

显然jQuery没有
makedoEvent()
函数。。。但是有没有类似的方法呢?

我在这里回答我自己的问题,因为我还没有看到任何正式的方法

基本上,我只是使用普通的旧Javascript创建一个新事件:

$(el).on('change', function (e) {
    if (e.originalEvent) return; // already a DOM event
    el.dispatchEvent(new Event('change', {
        bubbles: true,
        cancelable: true,
    }));
});

这会丢失jQuery事件中的所有数据。

在页面上添加两个脚本否?为什么除了jQuery之外,还需要一个单独的API来处理DOM事件?我使用的是使用DOM事件的第三方库,仅此而已。这不是需要它的问题,而是我必须处理的问题。不,如果你仔细看,如果我在
originalEvent
中发现一个DOM事件,我会立即返回并跳过尝试调度该事件。我的jQuery库正在使用
trigger()
来分派事件。为什么不在任何地方使用本机DOM事件呢?使用
trigger()
意味着您正在使用jQuery创建自定义事件。只需创建自定义DOM事件并在任何地方使用DOM事件。jQuery的
on()
方法仍将捕获它们。您可能希望停止立即复制此触发事件:如果您有其他jQuery侦听它,它将触发两次。如果您确实需要jQuery事件,那么可以将其附加到DOM事件:
var evt=new event([…]);evt.jQueryEvent=e;el.DIPATCH事件(evt)
然后在
e.originalEvent.jQueryEvent
中检索它。