2010-04-16 65 views
4

我有以下的jQuery代碼:JQuery的:現場<a>標籤部分工作第二次,

$("a[id*='Add_']").live('click', function() { 
    //Get parentID to add to. 
    var parentID = $(this).attr('id').substring(4); 

    //Get div. 
    var div = $("#CreateList"); 

    //Ajax call to refresh "CreateList" div with new unordered list. 
    div.load("/AddUnit?ParentID=" + parentID); 
}); 

基本上包含在專區內是一個嵌套的無序列表與幾個「Add_#」鏈接。單擊鏈接使用ajax調用以新節點重新創建列表。它清除所有的添加鏈接,但是它們被ajax調用再次添加。這就是爲什麼我使用.live方法,所以新添加的「Add_#」鏈接仍然具有綁定。

這在大多數情況下適用。如果我點擊「Add_1」,div會刷新新信息。如果我然後單擊「Add_2」,它會按預期再次運行。

當我點擊「Add_1」,然後頁面刷新(並創建一個新的「Add_1」鏈接)時,發生了問題,然後再次單擊重新呈現的「Add_1」。這是相同的鏈接,但它在ajax調用期間刷新。當我這樣做時,JavaScript函數仍然被調用,但.load方法不起作用。任何想法,爲什麼這可能會發生?謝謝。

+0

你確定add是通過正確的'Add_#'ID方案重新創建的嗎?或者......負載是否根本不開火? – 2010-04-16 14:24:21

+0

是的,同樣的渲染組件用於最初渲染頁面以及ajax調用。我把一個「警報(parentID)」;「在「div.load」行之後,該函數仍然被調用。該函數每次都會被調用,但是永遠不會有請求發送到「AddUnit」(通過fiddler確認)。 – Ocelot20 2010-04-16 14:49:51

回答

2

它看起來像被緩存的結果,爲了解決這個問題,強制jQuery以不緩存的方式發出請求。所有的方法之前添加此調用來做到這一點:

$.ajaxSetup({ cache: false }); 

您可以查看詳細信息$.ajaxSetup()$.ajax()