Подтвердить что ты не робот

Что эквивалентно jQuery 'trigger' метод без jquery?

какой эквивалент метода jQuery trigger без jQuery?

например, как я могу сделать что-то вроде $('.blah').trigger('click'); без jQuery?

4b9b3361

Ответ 1

Для некоторого значения "очень дрянной эквивалент":

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

Не все браузеры (например, Firefox!) позволяют имитировать события таким образом! Использование onclick() работает только в том случае, если событие находится в строке и т.д.

Пожалуйста, смотрите источник jQuery и найдите "trigger:" (первое совпадение), чтобы увидеть все ненужные вещи, сделанные для "заставить его работать" (это немного похоже на внутреннюю часть jQuery, другие структуры имеют гораздо более простые примеры).

Счастливое кодирование.

Ответ 2

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

Ответ 3

Вот мой пример. Хорошо работать во всех ситуациях.

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

Ответ 4

в Javascript

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

эквивалентен для запуска jQuery, как показано ниже

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