Событие jQuery Button.click () запускается дважды - PullRequest
71 голосов
/ 18 июня 2010

У меня следующая проблема с этим кодом:

<button id="delete">Remove items</button>

$("#delete").button({
     icons: {
             primary: 'ui-icon-trash'
     }
}).click(function() {
     alert("Clicked");
});

Если я нажму эту кнопку, предупреждение появится два раза.Это не только с этой конкретной кнопкой, но и с каждой отдельной кнопкой, которую я создаю.

Что я делаю не так?

Ответы [ 12 ]

1 голос
/ 26 августа 2014

Я обнаружил, что связывание element.click в функции, которая происходит более одного раза, поставит его в очередь, поэтому при следующем щелчке по нему будет срабатывать столько раз, сколько выполнялась функция привязки. Ошибка новичка, вероятно, на моем конце, но я надеюсь, что это поможет. TL, DR: убедитесь, что вы связали все клики в функции настройки, которые происходят только один раз.

0 голосов
/ 29 мая 2019

Это часто происходит, когда вы эффективно включаете скрипт более одного раза в шаблон.

  1. Либо вы включили скрипт более одного раза в один и тот же HTML-файл
  2. Вы уже добавили прослушиватель событий, используя атрибут onclick для элемента
  3. Если вы используете template inheritance, как extends в django, скорее всего, вы включили сценарий в несколько файлов, которые объединены в include или extend

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

Другое решение состоит в том, чтобы сначала удалить все click прослушиватели событий в сценарии, например:

$("#myId").off().on("click", function() {

});
...