2009-09-14 3 views
1

Вот что я пытаюсь сделать:Intercept javascript event

У меня есть страница с некоторыми ссылками. У большинства ссылок есть функция, прикрепленная к ним на событии onclick.

Теперь я хочу установить класс CSS для некоторых ссылок, а затем, когда будет нажата одна из ссылок, я хочу выполнить определенную функцию - после ее возвращения я хочу, чтобы ссылка выполняла функции onclick, которые были присоединены к Это.

Есть ли способ сделать то, что я хочу? Я использую jQuery, если это имеет значение.

Вот попытка на примере:

$("#link").click(function1); 
$("#link").click(function2); 
$("#link").click(function(){ 
    firstFunctionToBeCalled(function(){ 
     // ok, now execute function1 and function2 
    }); 
}); // somehow this needs to be the first one that is called 


function firstFunctionToBeCalled(callback){ 
    // here some user input is expected so function1 and function2 must not get called 
    callback(); 

} 

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

+0

См родственный : http://stackoverflow.com/questions/487069/add-event-in-the-head-of-the-queue –

ответ

0

Я бы использовал unbind jQuery для удаления любых существующих событий, а затем привязал функцию, которая будет упорядочивать события, которые я хочу, в том порядке, в котором я их хочу.

Оба связывают и отвязать находятся в документации JQuery на jquery.com и работать, как это ...

$(".myClass").unbind("click"); // removes all clicks - you can also pass a specific function to unbind 

$(".myClass").click(function() { 
    myFunctionA(); 
    myFunctionB($(this).html()); // example of obtaining something related to the referrer 
}); 
+0

Как насчет функции onclick, которая была прикреплена к элементу? – rahul

+0

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

0

Безобразная хак будет использовать MouseDown или MouseUp события. Они будут называться before the click event.

+0

Да, но когда нажимается, мне нужно выполнить функцию и на этом обратном вызове функции - продолжить выполнение всех щелчков, подключенных к ним. – sirrocco

1

Если я вас правильно понял, это Ват вы хотите сделать ..

var originalEvent = page.onclick; //your actual onclick method 
page.onclick = handleinLocal;  //overrides this with your locaMethod 

function handleinLocal() 
{  ...your code...  
    originalEvent(); 
// invoke original handler 
} 
0

Если вы можете добавить обработчик событий, прежде чем остальные обработчики можно попытаться использовать JQuery-х stopInmediatePropagation