Взгляните на этот пример: НЕ ИСПОЛЬЗУЕТСЯ ОТКЛЮЧЕНИЕ ПРИВЯЗКИ
КОД
$("#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