Здесь ответы верны для «нормальных» событий, то есть событий, которые определяются пользовательским агентом, но для пользовательских событий следует использовать метод «огня» прототипа. например

ибудь знает метод для запуска события в Prototype, как вы можете с помощью функции запуска jQuery?

Я связал прослушиватель событий с помощью метода наблюдения, но я также хотел бы иметь возможность запускать событие программно.

заранее спасибо

 Mohit Jain14 сент. 2010 г., 13:43
Посмотрите на мой ответ. В прототипе есть поддержка ...

Ответы на вопрос(4)

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);
    }
}

что есть один встроенный в Prototype, но вы можете использовать это (не проверено, но должно, по крайней мере, привести вас в правильном направлении):

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');
 thyagx24 дек. 2010 г., 15:12
Ответ Грега работает для меня, но это должно быть$('foo').triggerEvent('mouseover'); вместо$('foo').fireEvent('mouseover'); пс. извините, я новичок здесь и не знаю, как процитировать или прокомментировать ответ, который уже существует ... THX
 Roman Snitko02 сент. 2011 г., 18:03
Вы имели в виду $ ('foo'). triggerEvent ('mouseover')?
 quickshiftin20 дек. 2013 г., 19:44
Способ прототипа; очень хорошо!
Решение Вопроса

event.simulate.js соответствует вашим потребностям.

Я использовал это несколько раз, и это работает как шарм. Это позволяет вамвручную запускать нативные события, например, щелкните или наведите курсор мыши так:

$('foo').simulate('click');

Самое замечательное в этом то, что все подключенные обработчики событий будут по-прежнему выполняться, как если бы вы щелкнули элемент самостоятельно.

Запользовательские события Вы можете использовать стандартный метод прототипаEvent.fire().

 Jānis Gruzis20 июл. 2012 г., 19:06
Это поддерживает только события HTML и Mouse. Например, вы не можете вызвать событие onchange с момента его события Form. Но если вы объедините скрипт Gregs для этих случаев, то это довольно хороший инструмент.
 Neil Aitken20 янв. 2009 г., 11:49
Именно то, что я искал, большое спасибо
 CalebHC29 дек. 2009 г., 05:45
Черт возьми, блестящий! Это мне очень помогло. Спасибо :)
 Paul Lynch04 дек. 2013 г., 22:14
@ JānisGruzis HTMLEvents включает «изменение». Видетьw3.org/TR/DOM-Level-2-Events/events.html
 Marcy Sutton09 дек. 2010 г., 19:06
Это бесполезно для тех из нас, у кого есть проблемы с лицензированием плагинов - в итоге я вызвал функции для нативных элементов, так как Prototype отстой.

то есть событий, которые определяются пользовательским агентом, но для пользовательских событий следует использовать метод «огня» прототипа. например

$('something').observe('my:custom', function() { alert('Custom'); });
.
.
$('something').fire('my:custom'); // This will cause the alert to display

Ваш ответ на вопрос