Как отключить события на некоторое время в Javascript или jQuery - PullRequest
4 голосов
/ 06 апреля 2010

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

Допустим, у меня есть div или кнопка, у которой есть подписчик на событие onclick. Чтобы избежать двойного щелчка, когда методы делают некоторые вещи ajax, вот некоторые из способов, которые мы можем сделать:

  1. Отключить кнопку, пока метод не завершит свою работу
  2. Открепите, пока методы не закончат свою работу, а затем привяжите снова.
  3. Используйте какую-нибудь систему маркировки, например, логическое значение, чтобы она не использовала метод более одного раза.

Так есть ли другие способы, возможно, некоторые уловки JavaScript или уловки JQuery, которые более эффективны и лучше практикуются.

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 06 апреля 2010

Я просто добавляю некоторый класс типа «отключен» к этому элементу div или кнопке. И в моей функции, зарегистрированной для события onclick, я проверяю, присутствует ли этот класс. Если да, просто вернитесь.

Не могу думать ни о каком другом способе, кроме того, что ты сказал.

1 голос
/ 06 апреля 2010

Я думаю, что логический флаг - это довольно элегантное решение, и вы можете сохранить его «в секрете», используя свойство обработчика, например:

$(someElement).click(myHandler);

function myHandler() {
    if (!myHandler.inProgress) {
        myHandler.inProgress = true;
        // Do stuff
        // Set it back to false later
    }
}
0 голосов
/ 06 апреля 2010

Я не могу придумать более «хитрое» или «элегантное» решение, чем те, которые вы перечислили.

что такого неэффективного в отключении элемента или удалении привязки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...