What is equivalent to jQuery 'trigger' method without jquery?

what is the equivalent of jQuery trigger method without jQuery?

for example, how can I do something like $('.blah').trigger('click'); without jQuery?

+43
javascript jquery
Apr 14 '11 at 5:13
source share
4 answers

For some meaning "very crappy equivalent":

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

Not all browsers (like Firefox!) Allow you to simulate events this way! Using onclick() only works if the event is in a string, etc.

Please see the jQuery source and search for “trigger:” (first match) to see all the unnecessary things done to “make it work” (this is a bit like the inside of jQuery, other structures have much simpler examples).

Happy coding.

+17
Apr 14 '11 at 5:22
source share
— -

event.initMouseEvent ("click" ...

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"); 
+28
Apr 14 '11 at 5:26 a.m.
source share

Here is my example. Work well 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); 
+2
Feb 13 '15 at 0:59
source share

in javascript

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

equivalent to running jQuery as below

 $('#blah').trigger('click'); 
0
Dec 21 '17 at 14:48
source share



All Articles