2013-06-21 3 views
1

Добавление мои привязки к событию pageinit как так:JQuery Mobile pageinit повторно связывается на каждой странице загрузки

$('#mypage').on("pageinit", function() { 

    $('#login-sumbit').on('click', function() { 
     console.log('button clicked'); 
    }); 

}); 

Я ожидал бы pageinit связать событие щелчка только один раз. Но то, что происходит в моем приложении с одной страницей, заключается в том, что кнопка привязывается каждый раз, когда страница загружается даже при нажатии.

Это приводит к нежелательным множественным дублирующим связям. Любые идеи о том, какое событие использовать для привязки только один раз в моем одностраничном приложении, чтобы загрузка страницы снова (кнопка возврата, загрузка встроенной страницы) в том же сеансе не перевязывается?

ответ

0

Похоже, что я нашел ответ сам, получается совершенно правдоподобно, что каждый раз, когда страница загружается, получается, что она не перезагружается, даже если она не перезагружается с сервера, иначе что будет срабатывать при показе новой страницы.

pageinit - это правильное событие, но мне нужно использовать .one not .on, .one будет связывать только один раз.

$('#mypage').on("pageinit", function() { 

    $('#login-sumbit').one('click', function() { 
     console.log('button clicked'); 
    }); 

}); 

Теперь все работает должным образом. Еще лучше, что я нашел, что вы можете использовать .one с событием pageinit, чтобы еще больше контролировать ваши привязки и нагрузки данных, идеально подходящие для моих требований.

http://api.jquery.com/one/

0

Вы могли бы использовать:

$('#login-sumbit').off('click').on('click', function(e) { 
    console.log('button clicked'); 
}); 
+0

Спасибо Я думаю .one() ярлык для этого. – DalSoft

Смежные вопросы