какой эквивалент метода jQuery trigger
без jQuery?
например, как я могу сделать что-то вроде $('.blah').trigger('click');
без jQuery?
какой эквивалент метода jQuery trigger
без jQuery?
например, как я могу сделать что-то вроде $('.blah').trigger('click');
без jQuery?
Для некоторого значения "очень дрянной эквивалент":
var button = document.getElementById("thebutton")
button.click()
Не все браузеры (например, Firefox!) позволяют имитировать события таким образом! Использование onclick()
работает только в том случае, если событие находится в строке и т.д.
Пожалуйста, смотрите источник jQuery и найдите "trigger:" (первое совпадение), чтобы увидеть все ненужные вещи, сделанные для "заставить его работать" (это немного похоже на внутреннюю часть jQuery, другие структуры имеют гораздо более простые примеры).
Счастливое кодирование.
event.initMouseEvent("click"...
Вот пример:
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");
Вот мой пример. Хорошо работать во всех ситуациях.
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);
в Javascript
var event = document.createEvent("Event");
event.initEvent("click", false, true);
document.getElementById("blah").dispatchEvent(event);
эквивалентен для запуска jQuery, как показано ниже
$('#blah').trigger('click');