Действительно ценил бы, если кто-либо может помочь мне выяснить, почему я не могу запустить события программно при использовании делегации события в MooTools (от Элемента. Класс делегации).
Существует родитель Обработчик событий на родительском отделении не становится названным. Любая справка ценится.Удачи! Связанный вопрос: Сделайте события, инициированные с change
слушатель на некотором ребенке элементы. Когда событие изменения инициировано пользовательскими действиями, обработчик на родительском отделении инициирован, но когда я запускаю его программно с
fireEvent
на любом дочернем входе ничего не происходит. Основная установка:HTML
js
$("listener").addEvent("change:relay(.color)", function() {
alert("changed!!");
});
$("color").fireEvent("change"); // nothing happens
fireEvent
пузырь вообще в дереве DOM? Мой текущий взлом должен диспетчеризировать событие исходно, которое работает (но взлом, тем не менее) - http://jsfiddle.net/SZZ3Z/1/var event = document.createEvent("HTMLEvents")
event.initEvent("change", true);
document.getElementById("color").dispatchEvent(event); // instead of fireEvent
это не будет работать слишком хорошо "как есть". проблема с восходящей цепочкой событий (и с программным запуском событий) заключается в том, что может потребоваться, чтобы объект события был «реальным», чтобы он содержал 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
.