Делегатское мероприятие стреляет дважды - PullRequest
6 голосов
/ 30 июля 2011

Это событие делегата запускается дважды (не всегда, иногда).

client.bindButtonClickFunction = function(){

    $("#client-plugin").delegate(".client-button", "click", function()
    {
        var id = this.id.split('-')[2];
        client.retrieveMessageByID(id);
    });
};

Я вызываю функцию после вставки всех кнопок ".client-button".

Есть мысли о том, как это остановить?Я пробовал event.stopPropagation (), а также отмену делегирования и повторное делегирование безрезультатно.

Это в Chrome, как часть плагина Chrome.

Ответы [ 2 ]

21 голосов
/ 30 июля 2011

В зависимости от того, как вы зарегистрируете делегат , вы можете сделать следующее:

$("#client-plugin").undelegate('event').delegate('event', ...)

Также попробуйте добавить return false из вашего обработчика.

10 голосов
/ 03 августа 2015

Вам необходимо остановить немедленное распространение

   $("#client-plugin").on(".client-button", "click", function (e) {
    e.stopImmediatePropagation();
    var id = this.id.split('-')[2];
    client.retrieveMessageByID(id);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...