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

时间:2011-04-14 05:13:34

标签: javascript jquery

没有 jQuery jQuery trigger方法相当于什么?

例如,如何在不使用 jQuery 的情况下执行$('.blah').trigger('click');之类的操作?

4 个答案:

答案 0 :(得分: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");

答案 1 :(得分:21)

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

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

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

请参阅the jQuery source并搜索“触发器:”(第一场比赛)以查看为“使其工作”所做的所有蠢事(其中很多内容只是围绕jQuery内部,其他框架) make有更简单的例子。)

快乐的编码。

答案 2 :(得分:6)

在Javascript中

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

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

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

答案 3 :(得分:4)

这是我的例子。在所有情况下都能完美运作

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