Как отменить привязку слушателя, который вызывает event.preventDefault () (используя jQuery)? - PullRequest
127 голосов
/ 11 октября 2009

jquery переключает вызовы по умолчанию предотвратилое предотвращение дефолта (), поэтому настройки по умолчанию не работают. Вы не можете нажать на флажок, вы не можете нажать на ссылку и т. д. и т. д.

возможно ли восстановить обработчик по умолчанию?

Ответы [ 15 ]

0 голосов
/ 22 августа 2017

Вы можете установить, чтобы сформировать 2 класса. После того, как вы установили свой JS-скрипт на один из них, когда вы хотите отключить ваш скрипт, вы просто удалите класс со связанным скриптом из этой формы.

HTML:

<form class="form-create-container form-create"> </form>   

JS

$(document).on('submit', '.form-create', function(){ 
..... ..... ..... 
$('.form-create-container').removeClass('form-create').submit();

});
0 голосов
/ 15 февраля 2017

Используйте логическое значение:

let prevent_touch = true;
document.documentElement.addEventListener('touchmove', touchMove, false);
function touchMove(event) { 
    if (prevent_touch) event.preventDefault(); 
}

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

0 голосов
/ 30 июня 2016
$('#my_elementtt').click(function(event){
    trigger('click');
});
0 голосов
/ 15 апреля 2016

У меня была проблема, когда мне нужно было действие по умолчанию только после того, как было завершено какое-то настраиваемое действие (включить иначе отключенные поля ввода в форме). Я обернул действие по умолчанию (submit ()) в собственную рекурсивную функцию (dosubmit ()).

var prevdef=true;
var dosubmit=function(){
    if(prevdef==true){
        //here we can do something else first//
        prevdef=false;
        dosubmit();
    }
    else{
        $(this).submit();//which was the default action
    }
};

$('input#somebutton').click(function(){dosubmit()});
0 голосов
/ 23 января 2013

Я не уверен, что вы имеете в виду: но вот решение для аналогичной (и, возможно, той же) проблемы ...

Я часто использую protectDefault () для перехвата элементов. Тем не менее: это не единственный метод перехвата ... часто вы можете просто захотеть «вопрос», следующий за которым поведение продолжается, как прежде, или останавливается. В недавнем случае я использовал следующее решение:

$("#content").on('click', '#replace', (function(event){ return confirm('Are you sure you want to do that?') }));

По сути, «предотвращение по умолчанию» предназначено для перехвата и выполнения чего-то еще: «подтверждение» предназначено для использования в ... хорошо - подтверждении!

...