Кто-нибудь знает о способе запуска события в Prototype, как вы можете с помощью функции запуска jQuery?
Я связал прослушиватель событий с помощью метода наблюдения, но я также хотел бы, чтобы он мог запускать событие программно.
Заранее спасибо
Кто-нибудь знает о способе запуска события в Prototype, как вы можете с помощью функции запуска jQuery?
Я связал прослушиватель событий с помощью метода наблюдения, но я также хотел бы, чтобы он мог запускать событие программно.
Заранее спасибо
event.simulate.js
соответствует вашим потребностям.
Я использовал это несколько раз, и он работает как шарм. Он позволяет вручную запускать собственные события, например, щелчок или наведение так:
$('foo').simulate('click');
Самое замечательное в том, что все прикрепленные обработчики событий будут выполняться, как если бы вы сами нажали на элемент.
Для настраиваемых событий вы можете использовать стандартный прототип Event.fire()
.
Я не думаю, что есть один встроенный прототип, но вы можете использовать его (не тестировали, но должны хотя бы довести вас в правильном направлении):
Element.prototype.triggerEvent = function(eventName)
{
if (document.createEvent)
{
var evt = document.createEvent('HTMLEvents');
evt.initEvent(eventName, true, true);
return this.dispatchEvent(evt);
}
if (this.fireEvent)
return this.fireEvent('on' + eventName);
}
$('foo').triggerEvent('mouseover');
Я нашел этот пост полезным... http://jehiah.cz/archive/firing-javascript-events-properly
Он охватывает способ запуска событий как в Firefox, так и в IE.
function fireEvent(element,event){
if (document.createEventObject){
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on'+event,evt)
}
else{
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true ); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
}
Ответы здесь верны для "нормальных" событий, то есть событий, которые определяются User Agent, но для пользовательских событий вы должны использовать прототип "огонь". например.
$('something').observe('my:custom', function() { alert('Custom'); });
.
.
$('something').fire('my:custom'); // This will cause the alert to display