2012-06-15 33 views
1

我工作目前一個網站: http://dlt.tribehosting.com/solutionjQuery手機轉換衝突Jquery?

現在,當我在商業或住宅按鈕單擊它工作正常,但是當你去服務頁面jQuery中的「切換」是行不通的 - 實際上所有的jQuery腳本停止工作(主頁上的滑塊相同)。

如果頁面實際上被重新加載,那麼直到用戶轉到另一個鏈接而不是所有內容都打破。這是與(文檔).ready功能有關,因爲我正在使用它(您可以在標題中看到)。

任何想法如何防止這種衝突或迫使jQuery切換到通過導航鏈接訪問時在所有頁面上工作?

感謝

+0

你試過使用'jQuery'而不是'$'? – gcochard

+0

不確定你的意思? – Peter

+0

'$'是'jQuery'的別名,如果您在腳本中將$更改爲jQuery,則不應再發生衝突,如果確實是原因。 – gcochard

回答

1

你的問題是,你正在使用document.ready爲被帶到-到通過AJAX頁面的DOM運行代碼。這意味着如果您想綁定到添加到DOM的每個頁面的事件,則應使用pageinitpagecreate

變化:

$(function(){ 
    var sidebar = $('.hor-nav'); 
    sidebar.delegate('a.inactive','click',function(){ 
     sidebar.find('.active').toggleClass('active inactive'); 
     $(this).toggleClass('active inactive'); 
    }); 
}); 

要:

//run this code when a pseudo-page is added to the DOM 
$(document).delegate('[data-role="page"]', 'pageinit', function(){ 

    //only get the .hor-nav elements in this pseudo-page 
    var $sidebar = $(this).find('.hor-nav'); 

    //no need to delegate here since the elements for this page exist in the DOM now 
    $sidebar.find('a').bind('click',function(){ 
     $sidebar.find('.active').toggleClass('active inactive'); 
     $(this).toggleClass('active inactive'); 
    }); 
}); 

這將使用事件代表團,將永遠在DOM(document)存在一個元素,而.hor-nav元素不總是存在DOM如果它們是外部頁面的一部分。

它看起來像你有其他代碼取決於document.ready事件,這不應該是一個jQuery Mobile網站的情況。看看這個文檔:http://jquerymobile.com/demos/1.1.0/docs/api/events.html(注意大的黃色警告)

+0

的確...我已經移動了所有代碼,這取決於documentready,所以現在它可以工作!非常感謝您的幫助! – Peter

+0

實際上現在還有一件奇怪的事情,如果您轉到頁面:http://lb.vg/Sq684和點擊商業它應用類活躍,但是當你點擊返回到住宅 - 它正在切換類?任何想法爲什麼? – Peter

+1

'a.inactive'選擇器應更新爲'a',以便所有鏈接都綁定到。我已經更新了我的反應,以反映這一點。'a.inactive'選擇只對cur有約束力不活躍的鏈接,不是全部。您可以通過訪問您網站的任何部分並單擊非活動鏈接來測試此事實,然後再次單擊第一個鏈接,注意這些類不會更改。 – Jasper