Я пытаюсь обновить до продолжительного Jquery 1.7.1 (используя JQM 1.1pre).
Раньше я мог связываться со страницей JQM следующим образом:
$('#mypage').live('pageshow', function() { /* do stuff */ })
Для Jquery 1.7.1 теперь это должно быть:
$('#mypage').on('pageshow', function() { /* do stuff */ })
Или, если страница вставлена динамически
$('body').on('pageshow', '#mypage', function() { /* do stuff */ })
Вопросы:
Правильный синтаксис для jquery 1.7 +?
- Я не могу получить события для запуска в JQM, используя это. Я пытался $('div:jqmData(role="page")#mypage
, но это также не похоже на работу. Какой будет правильный синтаксис для добавления некоторых функций только к определенной странице JQM?
Спасибо за помощь!
EDIT:
Через некоторое вмешательство кажется, что вы можете звонить только on()
и off()
на $('div:jqmData(role="page")')
. Вызов соответствующего # pageID не работает. При таком многостраничном макете привязка срабатывает один раз на страницу, поэтому, если у вас есть 10 страниц в многостраничном документе, это:
$('div:jqmData(role="page")').on('pageshow', function() {
// do stuff
});
будет срабатывать 10 раз или один раз за страницу в многостраничном документе.
Полагаю, JQM обратит на это внимание до выпуска 1.1. А пока я использую это как своего рода обходной путь, чтобы убедиться, что материал прикреплен только один раз.
$('div:jqmData(role="page")').on('pageshow', function() {
console.log("one");
if ( $('.element').length > 0 && $('.element').jqmData('bound') != true) {
$('.element').jqmData('bound',true);
$('.element').on('click', function() { /* button click handler */ });
}
});
Я проверяю длину, поэтому код запускается только в том случае, если .element находится на соответствующей странице и не было ли оно уже привязано. Вы также можете использовать это для off()
.element на странице выше. Только не забудьте сбросить jqmData('bound')
, так что на следующих страницах его можно будет снова связать.