我想升級到持久Jquery 1.7.1(使用JQM 1.1pre)。如何使用on()和off()將事件附加到jquery移動頁面?
我曾經是能夠綁定到一個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(角色=‘頁面’)#我的空間但這也似乎不工作,什麼是正確的語法一些功能附加到特定JQM頁面只
?感謝您的幫助
編輯:
一些干預後,似乎你只能在$致電()和關閉()(「DIV:jqmData(角色=‘頁面’)」)。調用上分別爲#pageID不起作用。在多頁面佈局中,這樣的綁定會每頁觸發一次,所以如果您的多頁文檔中有10個頁面,則這樣:
$('div:jqmData(role="page")').on('pageshow', function() {
// do stuff
});
將在多頁文檔中觸發10次或每頁一次。
我想這將在1.1發佈之前由JQM提出。與此同時,我將此作爲一種解決方法,以確保只附加一次。
$('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是各自的網頁上,以及是否尚未已經綁定的代碼只運行。您也可以在pagebeforehide上使用此功能關閉()。元素。只是不要忘記重置jqmData('bound'),所以在下一個頁面顯示時可以重新綁定它。
爲什麼你需要使用'.on()'?我原以爲'.live()'仍然可以在jQuery 1.7中工作得很好。*:/ – 2012-02-26 09:08:15
@ChrisKempen - 它仍然有用,但是被廢of了。否則語法看起來是正確的,但是如果同時使用on和off,它可能是一個好主意,分離函數並調用它,如下所示:'$('body')。on('pageshow','#mypage' ,myfunction);'嘗試傾聽最接近的可能元素,而不是總是在文檔或主體上。 – adeneo 2012-02-26 09:16:52
@ChrisKempen:生活從1.7開始貶值http://api.jquery.com/live/ – frequent 2012-02-26 09:18:56