没有jquery,jquery的'trigger'方法相当于什么?

joh*_*ohn 54 javascript jquery

没有jQuery,jQuerytrigger方法相当于什么?

例如,我如何做$('.blah').trigger('click');没有jQuery的事情?

Ada*_*dam 29

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");
Run Code Online (Sandbox Code Playgroud)


小智 21

对于"非常伪劣的等价物"的某些价值:

var button = document.getElementById("thebutton")
button.click()
Run Code Online (Sandbox Code Playgroud)

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

请查看jQuery源代码并搜索"trigger:"(第一次匹配)以查看为"使其工作"所做的所有蠢事(其中很多内容只是围绕jQuery内部进行调整,其他框架使得有更简单的示例) ).

快乐的编码.

  • 这不等同于jQuery的`.trigger()`.其他事件怎么样?例如`resize`,`scroll`,`hashchange`.自定义活动怎么样?这甚至不能跨浏览器工作. (6认同)
  • 根据MDN,Firefox 5支持此功能. (2认同)
  • 还应该注意的是,调用`click()` 不会执行注册的事件监听器。 (2认同)

sua*_*kun 6

在Javascript中

var event = document.createEvent("Event");
event.initEvent("click", false, true); 
document.getElementById("blah").dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

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

$('#blah').trigger('click');
Run Code Online (Sandbox Code Playgroud)

  • MDN似乎在说`document.createEvent`已被弃用。请参阅https://developer.mozilla.org/en-US/docs/Web/API/Document/createEvent。它建议改为使用Event构造函数。 (2认同)

Mad*_*col 5

创建一个事件对象并将其传递给element.dispatchEvent(event)

  const event = new MouseEvent('click', {
    view: window,
    bubbles: true,
    cancelable: true
  });

  element.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)

更多信息