没有 jquery 的 jquery 'trigger' 方法的等价物是什么?

IT技术 javascript jquery
2021-03-01 01:59:53

什么是等效的jQuerytrigger方法,无需jQuery的

例如,如果$('.blah').trigger('click');没有jQuery,我该怎么做

4个回答

event.initMouseEvent("点击"...

下面是一个例子:

function simulateClick(elId) {
    var evt;
    var el = document.getElementById(elId);
    if (document.createEvent) {
        evt = document.createEvent("MouseEvents");
        evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    }
    (evt) ? el.dispatchEvent(evt) : (el.click && el.click());
}

var foo = document.getElementById("hey");

foo.onclick = function () {alert("bar");}

simulateClick("hey");

对于“非常劣质的等价物”的某些value:

var button = document.getElementById("thebutton")
button.click()

并非所有浏览器(例如 Firefox!)都允许以这种方式模拟事件!onclick()仅当事件在线等时使用才有效。

请查看jQuery 源代码并搜索“触发器:”(第一个匹配项)以查看为“使其工作”所做的所有令人讨厌的事情(其中很大一部分只是围绕 jQuery 内部结构进行的,其他框架有更简单的示例)。

快乐编码。

这不等同于 jQuery 的.trigger(). 其他事件呢?例如resizescrollhashchange自定义事件呢?这甚至不适用于跨浏览器。
2021-04-20 01:59:53
还应该注意的是,调用click()不会执行注册的事件侦听器。
2021-04-22 01:59:53
根据 MDN,从 Firefox 5 开始支持此功能。
2021-04-24 01:59:53
代码中的错别字;它应该是 getElementById(带有大写的“B”)。
2021-05-02 01:59:53

在 JavaScript 中

var event = document.createEvent("Event");
event.initEvent("click", false, true); 
document.getElementById("blah").dispatchEvent(event);

等效于 jQuery 触发器,如下所示

$('#blah').trigger('click');

这是我的例子。在所有情况下都能完美工作

var d=document.createEvent("MouseEvents"),
    c=document.createEvent("MouseEvents"),
    p=document.createEvent("MouseEvents");
    d.initMouseEvent("mousedown",true,true,window,0,0,0,0,0,false,false,false,false,0,null);
    c.initMouseEvent("click"    ,true,true,window,0,0,0,0,0,false,false,false,false,0,null);
    p.initMouseEvent("mouseup"  ,true,true,window,0,0,0,0,0,false,false,false,false,0,null);

    var element =// some selector;

    element.dispatchEvent(d);
    element.dispatchEvent(c);
    element.dispatchEvent(p);
initMouseEvent 现在已弃用。
2021-04-29 01:59:53