Когда вы назначаете обработчики для событий; вы просто храните набор функций, которые должны быть выполнены при возникновении события.
Когда происходит событие, добавленные вами обработчики выполняются в порядке их добавления . Так что, если вам нужно добавить три обработчика в событие click для div:
$("div").observe("click", function ()
{
alert("one");
});
$("div").observe("click", function ()
{
alert("two");
});
$("div").observe("click", function ()
{
alert("three");
});
.. вы получите три предупреждения («один», «два» и «три»), когда сработает событие click элемента div. Эти три предупреждения будут отображаться, если вы введете:
$("div").observe("click", function (e)
{
e.stop();
})
.. потому что вы отменяете событие только для одного конкретного обработчика. Не все связанные обработчики.
Поэтому вам нужно будет использовать ссылочную переменную, которая отслеживает, разрешено ли запускать событие click:
var cancelClickEvent = true;
$("div").observe("click", function ()
{
// if cancelClickEvent is true, return the function early, to
// stop the code underneath from getting executed
if (cancelClickEvent) return;
// your code goes here
});
Затем вам нужно будет реализовать вышеуказанное условие if во всех ваших обработчиках.