2011-06-21 65 views
-1

我對AJAX頗爲陌生,目前正在學習如何在演示網站上實現jQuery地址,以便將其移植到我正在開發的個人項目中。jQuery地址 - 深度鏈接和狀態

儘管我可以通過超鏈接加載所需內容並修改URL哈希,但如果我直接在瀏覽器欄中輸入URL哈希,我無法導航到特定狀態。

當前的代碼是這樣的:

$("h2.entry-title a").live('click', function(event) { 
    event.preventDefault(); 
    $("#content").fadeOut("slow").load($(this).attr("href")+" #content > *", function() { 
     $.address.value("?page=entry"); 
    }).fadeIn("slow"); 
}); 

我試圖尋找關於使用jQuery地址,實現深層鏈接教程和演示,但到目前爲止,沒有取得豐碩。

感謝您的幫助:)

P/S:爲什麼我用.live()代替.bind()是因爲在某些時候更進入遊戲將被動態插入的原因。

回答

0

當你第一次加載頁面時,這段代碼中沒有任何內容會讀取url。如果您輸入地址欄'http://test.com/test.html?page=entry',則需要在加載頁面時加載內容,手動更改散列和點擊事件。

http://abishaigray.com/jquery.address.php

$(function() { 
    var content = $("#content"); 
    var loadUrl = function(url) { 
     content.fadeOut("slow", function() { 
      content.load(url + " #content > *", function() { 
        content.fadeIn("slow"); 
       }); 
     }); 
    }; 
    $("a.loadUrl").live('click', function(event) { 
     event.preventDefault(); 
     $.address.parameter("page", $(this).attr("href")); 
    }); 
    $.address.change(function(vars) { 
     var page = $.address.parameter("page"); 
     if (page) { loadUrl(page); } 
    }); 
}); 

我把$.address.change事件的優勢。通過這種方式,無論何時您更新網址或用戶第一次到達時,內容都會重新加載。

+0

我有一個想法,我必須在某個時候使用$ .address.change,但我不知道如何實現它。你有一個簡單的例子來說明這一點嗎?謝謝你:) – Terry

+0

當然,見下文。 '$ .address.change(function(vars){alert('url changed!');});' 此外,請仔細閱讀[jQuery Adress Docs](http://www.asual.com)/jquery/address/docs /) –

+0

謝謝。我幾天前通讀了文檔和示例,但仍然在努力瞭解它是如何工作的。我在這裏舉了一個例子來說明'$ .address.change()'是如何工作的 - http://jsfiddle.net/5L6Ur/9/ 不過,困擾我的是如何在用戶導航到正確的狀態時他們輸入一個國家特定的網址?我希望有一些正則表達式,但到目前爲止還沒有發現任何示例。 – Terry