Связать и развязать события в Jquery

$(document).on("pagebeforeshow", function(event) {
            $("#mybtn").on("click", function(e) {
                $.mobile.showPageLoadingMsg();
                $.mobile.changePage("twitter.html", {
                    reloadPage: false, changeHash: true,
                });
                $('#mybtn').unbind('');

            });
        });

Можете ли вы сказать мне, почему развязка важна в Jquery mobile, и, пожалуйста, скажите мне, как лучше всего развязать события. Я использовал следующий способ привязки и развязки событий. Это нормально


person user2889058    schedule 20.10.2013    source источник


Ответы (1)


Взгляните на этот пример: НЕ ИСПОЛЬЗУЕТСЯ ОТКЛЮЧЕНИЕ ПРИВЯЗКИ

КОД

$("#page2").on("pagebeforeshow", function(){
    $("#testBtn").on("click", function(){
       alert("Hi!"); 
    });
});

Если вы перейдете со страницы 1 на страницу 2, а затем нажмете кнопку с именем Click me, вы увидите, что предупреждение "Привет!" отображается правильно. Мероприятие было привязано к pagebeforeshow, до сих пор все ок.

Теперь вернитесь на страницу 1, а затем снова загрузите страницу 2, снова нажмите кнопку Click me. Вы увидите, что предупреждение отображается 2 раза! и это НЕПРАВИЛЬНО. Вот почему вам нужно unbind событие ДО того, как вы снова его привяжете.

По сути, каждый раз, когда вы загружаете страницу 2, вы привязываете новое событие к кнопке. Итак, если вы загружаете эту страницу 10 раз, у вас будет 10 событий, привязанных к кнопке, которые будут срабатывать после нажатия кнопки.

Вот рабочая скрипка с unbind (чтобы отвязать событие, я использовал off()): ОТПИСАТЬ ИСПОЛЬЗОВАННОЕ >

КОД

$("#page2").on("pagebeforeshow", function(){
    $("#testBtn").off("click").on("click", function(){
       alert("Hi!"); 
    });
});

посмотрите здесь, чтобы понять, почему я использовал off() вместо unbind(), а также здесь, если хотите узнать, как работает off()

Я надеюсь, что это поможет прояснить ваши сомнения.

person BeNdErR    schedule 20.10.2013
comment
$(document).on('click.register', '.registerSubmitter', function(e) { // делаем что-то }); что вы думаете об этом методе page-is-kept" title="как правильно отвязать события в jquery mobile, используя on off при сохранении страницы"> stackoverflow.com/questions/10950443/ - person user2889058; 20.10.2013