我正在使用JQuery向表中添加一行。在行內是一個元素誰是我捕獲的點擊事件:jQuery ajax和dom問題
$(document).ready(function() {
var newRow = "<tr> ... </tr>";
$('tableName > tbody:last').append(newRow);
$(...).click(function() { // click event on newly inserted elem in the row
alert("click");
});
}
這工作的很好,警報出現預期。但是,當我現在通過Ajax調用動態添加新行和解析XML,它停止工作:
$(document).ready(function() {
getData();
$(...).click(function() { // click event on newly inserted elem in the row
alert("click");
});
function getData() {
$.ajax({
...
success: function(data) {
//parse the xml
$('tableName > tbody:last').append(parsedXml);
}
});
}
的HTML是正確添加到DOM,但點擊事件不再抓獲。在這裏發生的範圍或關閉是否存在問題?
哇,那工作的感謝!你能解釋爲什麼這有效嗎?我的意思是,我創建了dom元素創建後的點擊處理程序......任何方式都不能接受你的答案,當它讓我 – aeq 2010-08-23 17:07:40
哦,是不是因爲ajax調用是異步的?所以基本上,在註冊處理程序 – aeq 2010-08-23 17:10:50
之前,dom並沒有真正創建。當新元素被添加到頁面時,需要使用.live(),無論是使用ajax還是僅添加一個添加到點擊函數中的元素。基本的經驗法則,如果你的DOM正在改變使用.live()。看看我的答案中的更多信息鏈接,以及更多信息:) – lnrbob 2010-08-23 17:14:11