JQuery: добавить обработчик подтверждения с функциями привязки / включения и триггера

0

Я пытаюсь добавить окно подтверждения ко многим ссылкам, кнопкам или входам в событие click.

Я не могу использовать location.href, submit() или другие специальные функции, потому что:

  • Например, location.href не будет работать на кнопку отправки,
  • Например, location.href не будет запускать другие связанные обработчики.

Так что мне нужно использовать функцию trigger(), которая теоретически выполняет все обработчики и собственное действие. "Трудная" часть состоит в том, чтобы выполнить все обработчики, ИСКЛЮЧИТЕ обработчик, который появляется в поле подтверждения.

Вот мой код:

$('a, button, input[type="submit"]').each(function() {

    var oButton = $(this);

    oButton.on('click.pending', function(oEvent) {
        console.log('click !');
        oEvent.preventDefault();

        var oDialog = $('<div class="dialog-example">[Question] ?</div>').dialog({
            buttons: {
                Cancel: function() {
                    console.log('cancelled !');
                    // Nothing to do
                    oDialog.dialog('close');
                },
                Ok: function() {
                    console.log('confirmed !');
                    // Trigger the rest of the handlers AND the native action, BUT not this one, so this dialog is not used
                    // Problem : nothing happens here
                    oButton.trigger('click.confirmed');
                    oDialog.dialog('close');
                }
            }
        });
    });

});

Заранее спасибо ! ;)

Теги:
triggers
bind
confirm

1 ответ

0
Лучший ответ

Ты должен попытаться:

oButton.off('click.pending').trigger('click').get(0).click();

DEMO

  • 0
    Приятно ! Но проверка делается только один раз. Мне нужно отскочить обработчик после вашего кода, я думаю.
  • 0
    Предполагается, что нажатие на привязку или отправку перенаправляет пользователя на новую страницу или перезагружает текущую страницу, поэтому обычно вам не нужно перепривязывать событие. Тем не менее, вы все равно можете использовать ссылочную функцию и перепривязать ее после запуска события: jsfiddle.net/EHkGq/show
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню