Развяжите jQuery даже обработчик

Я пытаюсь ответить на этот вопрос несколько минут назад и подготовил этот пример ко мне:



То, почему первые развязывают, не работает:


Но эти работы для trialMethod2 метода:


8
задан Brian Tompsett - 汤莱恩 23 August 2019 в 08:49
поделиться

3 ответа

Первый сценарий отмены привязки не работает из-за модели событий jQuery. jQuery сохраняет каждую функцию обработчика событий в массиве, к которому вы можете получить доступ через $ ("# foo"). data ('events') . Функция unbind ищет только данную функцию в этом массиве. Таким образом, вы можете только обработчики событий unbind () , которые были добавлены с помощью bind ()

12
ответ дан 5 December 2019 в 07:36
поделиться

I ran into a similar issue before. What I concluded was that you can only unbind a method you have binded. Since trialmethod() was NOT binded through jquery, calling unbind on the method wouldnt work.

Please let us know if you figure it out by any chance.

Thanks.

1
ответ дан 5 December 2019 в 07:36
поделиться

Никто никогда не должен смешивать свою разметку со своим кодом взаимодействия, если они используют jQuery.

Добавьте некоторый javascript на страницу, например так:

$(function() {
    $('#aspnetForm').bind('submit',function() {
        trialMethod();
    });
    $('#btnTrial2').bind('click',function() {
        $('#aspnetForm').unbind('submit');
    });
    $('#btnTrial2').bind('click',function() {
        $('#aspnetForm').bind('submit', trialMethod2).unbind('submit');
    });
});

Теперь, с этим вне пути ... Теперь все должно работать (даже если теперь вы будете дважды связывать #aspnetForm перед тем, как полностью отсоединять его при нажатии второй кнопки). Проблема заключалась в том, что форма никогда не была «обязательной» для начала. Вы можете отменить привязку параметров onsubmit к разметке.

5
ответ дан 5 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: