问题描述
|
什么等于没有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);