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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5658849/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-23 18:19:04  来源:igfitidea点击:

what's the equivalent of jquery's 'trigger' method without jquery?

javascriptjquery

提问by john

what's the equivalent of jQuery's triggermethod without jQuery?

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

e.g., how do i do something like $('.blah').trigger('click');without jQuery?

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

采纳答案by Adam

For some value of "a very shoddy equivalent":

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

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

Not all browsers (e.g. Firefox!) allow simulated events this way! Using onclick()only works if the event is in-line, etc.

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

Please see the jQuery sourceand search for "trigger:" (first match) to see all the icky stuff done to "make it work" (a good bit of it is just munging around the jQuery internals, other frameworks make have much simpler examples).

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

Happy coding.

快乐编码。

回答by Adam

event.initMouseEvent("click"...

event.initMouseEvent("点击"...

Here is an example:

下面是一个例子:

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");

回答by suatCoskun

in Javascript

在 JavaScript 中

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

is equivalent for jQuery trigger as below

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

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

回答by Mikolaytis

Here is my example. Working perfectly in all situations

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

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);