求jquery的trigger()方法原理

请问用原生的js怎么实现和trigger方法一样的功能?就是如何用脚本触发一个元素的某个事件,而不是人为的。请不要复制jquery的源代码,那对我没有任何帮助。我刚看了,这个方法的代码太复杂,除非对jquery整个框架都了解才能看懂。
谢谢你们的回答,直接调用element的方法不是很有用,有的浏览器不支持。
我仔细翻看了xml dom的api文档,觉得下面的方法才是比较符合规范的,浏览器支持较好:
var event = document.createEvent("MouseEvents");//onchange事件要用HTMLEvents
event.initEvent("click",true,true);//三个参数分别对应event的 type 属性、bubbles 属性和 cancelable 属性
element.dispatchEvent(event);//给元素分派事件
最新回答
玩世

2020-08-10 13:28:44

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 原生的js触发click事件
elem.click();
 
// Jquery也用相同的方式
// Jquery trigger的代码片段
trigger: function (event, data, elem, onlyHandlers) {
// ...
// ...
     try {
         // 这里是触发事件的代码
         elem[type]();
     catch (e) {
         // IE<9 dies on focus/blur to hidden element (#1486,#12518)
         // only reproducible on winXP IE8 native, not IE9 in IE8 mode
     }
// ...
// ...
    }
 
    return event.result;
}
岁月并非如歌

2023-12-25 01:18:41

1
2
3
4
5
6
7
8
9
淺笑ペ安然

2022-02-01 13:47:48

//原生js trigger方法
function trigger(elem,event){
if(document.all) {
elem.event();
} else {
var evt = document.createEvent("Events"); //还有onchange则是HtmlEvents
evt.initEvent(event,true,true);
elem.dispatchEvent(evt);
};
}
            // 直接获取element绑定的方法调用就可以了
            var triggle = function(element, method) {
                var func = element[method];
                return func();
            }
 
            window.onload=function() {
                triggle(document.getElementById("abc"), "onclick");
            };