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方法不起作用。任何想法,爲什麼這可能會發生?謝謝。
你確定add是通過正確的'Add_#'ID方案重新創建的嗎?或者......負載是否根本不開火? – 2010-04-16 14:24:21
是的,同樣的渲染組件用於最初渲染頁面以及ajax調用。我把一個「警報(parentID)」;「在「div.load」行之後,該函數仍然被調用。該函數每次都會被調用,但是永遠不會有請求發送到「AddUnit」(通過fiddler確認)。 – Ocelot20 2010-04-16 14:49:51
請注意,.live不會綁定到元素,而是綁定到文檔本身,所以聽起來像其他事情正在發生,就像Nick所建議的那樣(因爲刪除和添加元素不應該影響事件處理程序除非標記與實況事件的選擇器不匹配)。 – CalebD 2010-04-16 19:19:44