это не будет работать слишком хорошо "как есть". проблема с пузырями событий (и с программным срабатыванием событий) заключается в том, что может потребоваться, чтобы объект события был «реальным», чтобы он содержал event.target
, который сопоставляется со строкой реле. Кроме того, document.id("color").fireEvent()
не будет работать, так как сам цвет не имеет прикрепленного события.
Чтобы обойти это, вы фальсифицируете событие на родительском слушателе, передавая объект события, который содержит целевой элемент, например:
document.id("listener").fireEvent("change", {
target: document.id("color")
});
просмотр в действии: http://www.jsfiddle.net/xZFqp/1/
если вы делаете что-то вроде event.stop в своей функции обратного вызова, тогда вам нужно передать {target: document.id("color"), stop: Function.from}
и т. Д. Для любых методов событий, на которые вы можете ссылаться, но код делегирования события сейчас интересует только target
.