2013-04-05 25 views
3

我正在將一個普通網站轉移到jQuery移動版。我有一些事件綁定,以及其他頁面的具體調整:如何獲取事件綁定以使用jQuery移動?

$('.roulette-img').css({ 
}); 

$('.shuffle-img').each(function(){ 
}); 

$('.button').bind('mousedown', function(){ 
}); 

$('.spin-btn').bind('mousedown', function(){ 
    $(document).bind('mouseup', function(){ 
    }); 
}) 

$(window).resize(function(){ 
}); 

眼下某些頁面不因爲他們應該(通過不發射這些事件)的工作。我知道這是因爲jQuery的ajax導航,該腳本只在加載第一頁時加載一次,因此通過AJAX加載的所有後續內容都不會綁定到事件。

哪種方式最好解決它?

+0

問題中的代碼是否駐留在「就緒」處理程序中? – 2013-04-05 09:39:56

+0

@FrédéricHamidi它駐留在一個自我調用函數中。 – styke 2013-04-05 09:42:29

回答

1

首先不使用綁定,它被棄用並從jQuery版本1.9 +中刪除。改爲使用。這裏有一個例子:

$('#buttonID').on('click', function(){  

}); 

此外,如果你要執行你需要做一個jQuery Mobile的頁面事件裏面,像這樣某個頁面裏面的東西:

$(document).on('pagebeforeshow', '#index', function(){  

}); 

我給你做的工作示例:http://jsfiddle.net/Gajotres/8hKe2/

在這裏你可以看到它看起來使用頁面事件來執行特定頁面的代碼。

你想知道的一切都可以這樣的回答/文章中找到:jQuery Mobile: document ready vs page events

+1

謝謝,絕對精彩的文章。非常深入,正是我所需要的。保重。 – styke 2013-04-05 09:48:47

+0

@Gajotres,IIRC我們之前就已經討論過這個問題了,但是如果頁面被隱藏然後再次顯示,你不覺得綁定到'pagebeforeshow'而不是'pageinit'會導致'mousedown'處理程序被綁定多次? – 2013-04-05 09:51:16

+0

這只是一個例子。當我有其他文章非常詳細地描述這一點時,沒有必要解釋所有的東西:http://stackoverflow.com/a/14469041/1848600,在我的答案中發佈了同樣的文章。 – Gajotres 2013-04-05 09:52:38

0

如果你想爲他們加載你的處理程序綁定到新的頁面,你可以使用pageinit事件和限制您的選擇器到當前初始化的頁面:

$(document).on("pageinit", function(e) { 
    $(".button", e.target).on("mousedown", function() { 
     // ... 
    }); 

    $(".spin-btn", e.target).on("mousedown", function() { 
     // ... 
    }); 
});