jQuery - перекрывающиеся события клика ... Как предотвратить один - PullRequest
1 голос
/ 10 февраля 2010

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

В конце я бы хотел, чтобы плагин переопределил функцию ajax. Я не совсем уверен, как это сделать. Какие-либо предложения? Я не могу опубликовать весь плагин, но вот быстрый пример.

Вызов Ajax здесь:

$('p.thisClass').live('click',function() {
    //Ajax Fires here
});

Фрагмент плагина здесь:

config.button.live('click', function() {
    someFunction();
    // Stop Other click event from firing
});

Есть несколько способов взглянуть на это, но в конце я хочу, чтобы плагин имел приоритет над кликом, запускающим Ajax. Любые мысли о том, как это сделать ??

Спасибо

Ответы [ 3 ]

0 голосов
/ 11 февраля 2010

У вас есть контроль над функцией привязки? Если это так, обратитесь к методам jQuery unbind или die: Unbind Die

Используя его, вы можете присвоить исходное событие щелчка ajax переменной, а затем отсоединить / умереть только это:

Пример: отменить привязку только одного ранее связанный обработчик, передайте функцию как второй аргумент:

     var foo = function () {
     // code to handle some kind of event
     };

     $("p").bind("click", foo); // ... now foo will be called when paragraphs
 are clicked ...

     $("p").unbind("click", foo); // ... foo will no longer be called.
0 голосов
/ 21 мая 2012

Рассматривали ли вы отключение кнопки после первого щелчка?

Звучит так, будто я решил проблему с несколькими представлениями.

0 голосов
/ 10 февраля 2010

Чтобы отменить событие, я просто запросил

return false;

Вам просто нужно проверить, какой обработчик событий присоединить первым.

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

...