Как вызвать событие после использования event.preventDefault () - PullRequest
131 голосов
/ 30 сентября 2011

Я хочу удерживать событие до тех пор, пока не буду готов его запустить, например:

$('.button').live('click', function(e){

   e.preventDefault(); 

   // do lots of stuff

   e.run() //this proceeds with the normal event    

}

Существует ли эквивалент функции run(), описанной выше?

Ответы [ 13 ]

1 голос
/ 21 декабря 2017

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

1 голос
/ 20 октября 2016

Другим решением является использование window.setTimeout в прослушивателе событий и выполнение кода после завершения процесса события. Что-то вроде ...

window.setTimeout(function() {
  // do your thing
}, 0);

Я использую 0 на период, так как меня не волнует ожидание.

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

Если этот пример может помочь, добавляет «пользовательское подтверждение» в некоторых ссылках (я сохраняю код «$ .ui.Modal.confirm», это просто пример обратного вызова, выполняющего исходное действие):

//Register "custom confirm popin" on click on specific links
$(document).on(
    "click", 
    "A.confirm", 
    function(event){
        //prevent default click action
        event.preventDefault();
        //show "custom confirm popin"
        $.ui.Modal.confirm(
            //popin text
            "Do you confirm ?", 
            //action on click 'ok'
            function() {
                //Unregister handler (prevent loop)
                $(document).off("click", "A.confirm");
                //Do default click action
                $(event.target)[0].click();
            }
        );
    }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...