【发布时间】:2010-04-22 07:41:51
【问题描述】:
如果有人能帮我弄清楚为什么我在 MooTools 中使用事件委托(来自 Element.Delegation 类)时无法以编程方式触发事件,我将不胜感激。
有一个父 <div> 在某些子 <input> 元素上有一个 change 侦听器。当用户操作触发更改事件时,父 div 上的处理程序会被触发,但是当我在任何子输入上使用 fireEvent 以编程方式触发它时,什么也没有发生。基本设置是:
html
<div id="listener">
<input type="text" id="color" class="color" />
</div>
js
$("listener").addEvent("change:relay(.color)", function() {
alert("changed!!");
});
$("color").fireEvent("change"); // nothing happens
没有调用父 div 上的事件处理程序。任何帮助表示赞赏。
相关问题:使用fireEvent 触发的事件是否会在 DOM 树中冒泡?我目前的 hack 是在本地调度正在运行的事件(但仍然是 hack)-http://jsfiddle.net/SZZ3Z/1/
var event = document.createEvent("HTMLEvents")
event.initEvent("change", true);
document.getElementById("color").dispatchEvent(event); // instead of fireEvent
【问题讨论】:
标签: javascript mootools event-delegation mootools-events