Sam*_*Sam 11 javascript jquery javascript-events
我想通过jQuery trigger()方法模拟假mousedown事件,并通过本机javascript方法注册mousedown事件 - addEventListener().我发现它无法触发......
elem.addEventListener('mousedown', function () {
alert('addEventListener');
});
$(elem).on('mousedown', function () {
alert('on');
});
$(elem).trigger('mousedown');
Run Code Online (Sandbox Code Playgroud)
我做了一些测试.
这里有什么不对吗?
谢谢.
PS之所以使用addEventListener(),是因为我想编写一个没有jQuery的库.
尝试使用
EventTarget.dispatchEvent
Run Code Online (Sandbox Code Playgroud)
你的代码就像是
var elem = document.getElementById('square');
elem.addEventListener('mousedown', function () {
alert('addEventListener');
});
$(elem).on('mousedown', function () {
alert('on');
});
elem.dispatchEvent(new Event('mousedown'))
Run Code Online (Sandbox Code Playgroud)
fireEvent如果您正在考虑使用IE,则可能需要使用.
object.fireEvent(bstrEventName, pvarEventObject, pfCancelled)
Run Code Online (Sandbox Code Playgroud)
就像
if (document.createEvent) {
element.dispatchEvent(event);
} else {
element.fireEvent("on" + event.eventType, event);
}
Run Code Online (Sandbox Code Playgroud)
Jquery仅触发自己创建的事件
甚至订单也很重要:这个工作
$(elem).on('mousedown', function () {
alert('on');
});
$(elem).trigger('mousedown');
Run Code Online (Sandbox Code Playgroud)
但是下面的代码将无效
$(elem).trigger('mousedown');
$(elem).on('mousedown', function () {
alert('on');
});
Run Code Online (Sandbox Code Playgroud)
看看这个DEMO FIDDLE
| 归档时间: |
|
| 查看次数: |
11191 次 |
| 最近记录: |