没有jquery的jquery的“触发”方法等效于什么?

问题描述

| 什么等于没有jQuery的
trigger
方法? 例如,如何在没有jQuery的情况下执行类似
$(\'.blah\').trigger(\'click\');
的操作?     

解决方法

对于“非常伪劣的等效物”的某些值:
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,window,false,null);
    }
    (evt) ? el.dispatchEvent(evt) : (el.click && el.click());
}

var foo = document.getElementById(\"hey\");

foo.onclick = function () {alert(\"bar\");}

simulateClick(\"hey\");
    ,用Java语言编写
var event = document.createEvent(\"Event\");
event.initEvent(\"click\",true); 
document.getElementById(\"blah\").dispatchEvent(event);
等效于jQuery触发器,如下所示
$(\'#blah\').trigger(\'click\');
    ,这是我的例子。在任何情况下都能完美工作
var d=document.createEvent(\"MouseEvents\"),c=document.createEvent(\"MouseEvents\"),p=document.createEvent(\"MouseEvents\");
    d.initMouseEvent(\"mousedown\",null);
    c.initMouseEvent(\"click\",null);
    p.initMouseEvent(\"mouseup\",null);

    var element =// some selector;

    element.dispatchEvent(d);
    element.dispatchEvent(c);
    element.dispatchEvent(p);