最近做項目的時候,使用ajax調用後臺數據來動態生成頁面內容。然後在給那些內容綁定一個點擊事件的時候,發現點擊竟然無效了。原因是:ajax有個請求時間,無論是同步還是異步,JQuery進行的綁定都會在頁面加載完後立刻進行,而不是等待ajax請求完。也就是說,綁定的元素綁空了。那這個問題怎麼解決呢。方法如下:
在動態生成的時候綁定一個函數,並把對象傳進去,如:
strhtml = strhtml + "<td>" + "<button class='btn btn-primary' οnclick='editPosition($(this));' data-toggle='modal' data-target='#PlaceModal'>"
+ "<i class='fa fa-edit'></i>編輯" + "</button>" + "</td>";
然後,js裏聲明那個函數,並接收this對象,如:
function editPosition(obj){
$("#Posi-actionFlag").val("update");
$("#Posi-id").val(obj.parent().parent().children("td").eq(0).html());
$("#Posi-frequence").val(obj.parent().parent().children("td").eq(2).html());
$("#Posi-frequence2").val("0");
$("#Posi-name").val(obj.parent().parent().children("td").eq(1).html());
var del = obj.parent().parent().children("td").eq(3).html();
if(del == "0"){
$("#Posi-isdelete").bootstrapSwitch("state", true);
}else{
$("#Posi-isdelete").bootstrapSwitch("state", false);
}
}
這樣就可以啦,問題解決