我有一個數據表,按鈕上點擊某些值保存到數據庫,而其他值被檢索。我需要這個過程是連續的,但我只能在第一時間才能完成。jQuery ajax只能第一次工作
起初我使用.ajax()
和.replaceWith()
重寫整個表,但因爲這覆蓋了DOM,所以它正在丟失與該表相關的事件。我不能使用.live()
,因爲我使用的是stopPropagation()
而.live()
由於事件冒泡而不支持它。我基本上能夠將點擊事件重新綁定到.ajax()
回調中的表上,但第二次對按鈕點擊事件的調用卻什麼也沒做。
我改變了代碼使用.get()
爲ajax和.html()
將結果放在表中(服務器端代碼現在返回完整的表sans <table>
標籤)。我不再需要重新綁定到表格的點擊事件,但後續點擊按鈕仍然不起作用。
最後,我將其更改爲,但具有相同(非)結果。
「無所事事」我的意思是,雖然ajax調用正在按預期返回新的HTML,但它並未應用於表格。我確定它與改變DOM有關,但我認爲,因爲我只是覆蓋表格內容而不是表格對象本身,它應該工作。顯然我錯過了一些東西;它是什麼?
編輯:
HTML:
<table id="table1" class="mytable">
<tr>
<td><span id="item1" class="myitem"></span></td>
<td><span id="item2" class="myitem"></span></td>
</tr>
</table>
<input id="Button1" type="button" value="Submit" />
的jQuery:
$("Button1").click(function() {
$("table1").load(
"data.aspx",
function(data) {
//...
}
);
});
這將是有幫助的一些代碼片段,甚至一些源的例子,從之前與AJAX事件之後。你在這裏有很多信息,很難跟蹤你正在做什麼。 – Shaded 2010-06-15 14:44:16
您解釋了*「無所事事」我的意思是,雖然ajax調用正在按預期返回新的HTML,但它並未應用於表*,所以這意味着您的Ajax調用成功了,這是DOM操作或使用innerHTML失敗。 – 2010-06-15 14:49:32
@Shaded:雖然問題最終並不是嚴格的jQuery,但我添加了一些我正在做的事情的示例代碼。 – 2010-06-15 20:42:41