我是jQuery新手,我很驚訝如何解決這個問題。我打上刪除,顯示通過這個代碼的鏈接:如何檢測由jQuery在HTML中創建的新元素?
$('a[id^="del"]').css('border','red 1px solid');
問題是,當我添加了一個新的活動通過這個代碼:
function addGradebkhdr() {
var formData = formToJSON();
$.ajax({
type: 'post',
contentType: 'application/json',
url: 'http://samle.com/api',
dataType: "json",
data: formData,
success: function(data, textStatus, jqXHR){
**addTableGradebkhdr(data);**
},
error: function(jqXHR, textStatus, errorThrown){
// handle error
}
});
}
function addTableGradebkhdr(data) {
var lr = $(".tb-gradebkhdr tbody tr:last-of-type");
var no = parseInt($(".tb-gradebkhdr tbody tr:last-of-type td:first-of-type").text());
var ctr = no + 1;
var d = new Date(data.date);
var day = d.getDate();
var month = d.getMonth() + 1; //Months are zero based
var year = d.getFullYear();
var sDate = month + "/" + day + "/" + year;
var row = '<tr id="'+ data.id +'" ><td>'+ ctr +'</td>';
row += '<td>'+ data.criteria_name +'</td>';
row += '<td>'+ data.rawhigh +'</td>';
row += '<td>'+ sDate +'</td>';
row += '<td>'+ data.quarter +'</td>';
row += '<td>'+ data.remarks +'</td>';
row += '<td>';
row += '<a gradebkhdrid="'+ data.id +'" id="edit-'+ data.id +'" href="#">Edit</a> ';
row += '<a gradebkhdrid="'+ data.id +'" id="del-'+ data.id +'" href="#">Delete</a>';
row += '</td></tr>';
lr.after(row);
}
$(document).ready(function(){
$("#frmBtn-grbkhdr-save").on('click',**addGradebkhdr**);
$('a[id^="del"]').each(function(){
$(this).on("click",function() {
var gradebkhdrid = $(this).attr('gradebkhdrid');
deleteGradebkhdr(gradebkhdrid);
});
});
});
和表變成這個樣子:
爲您可以看到最後一個刪除未被檢測到
$('a[id^="del"]').each(function(){
$(this).on("click",function() {
var gradebkhdrid = $(this).attr('gradebkhdrid');
deleteGradebkhdr(gradebkhdrid);
});
});
紅色邊框不是表格的一部分。我用它來跟蹤事件/錯誤陷印。正如您在第一張圖片中看到的,該頁面已加載,並且所有刪除鏈接都標記爲紅色。這意味着刪除鏈接全部工作。
但是當我通過jQuery ajax函數添加一個新的Activity來提交表單並創建了一個Table Row及其內部的元素,其中包括Delete按鈕。添加的刪除鏈接不起作用,我創建的紅線也未應用,因爲您可以看到第二張圖片。
關於添加紅色邊框爲什麼不在你的CSS樣式表中做?然後它會自動應用到動態添加的元素。你不需要JS(或jQuery)來完成它。 – nnnnnn