Ajax 调用后的可点击行
Clickable Rows after Ajax Call
我有一个 table 拖车,可以通过以下方式点击:
$(".clickableRow").click(function() {
console.log('Row Clicked');
window.document.location = $(this).attr("href");
});
页面加载后效果很好。但是,我们添加了一个搜索功能,可在 Ajax 调用后动态添加行。
调用完成后,这些行将不再可点击。
$('#carName').changeOrDelayedKey(function(e) {
var carSearch = $(this).val();
console.log(carSearch);
var carRows = $('#carTable tr[id^="product-"]');
$(carRows).each(function () {
console.log('This:'+this);
$(this).remove();
});
//Get new data
$.post("search.php", {s: carSearch}, function (data) {
console.log(data);
$.each(data, function (index) {
if ($('#product-' + data[index].externalProductId + '').length == 0) {
$('#carTable').append('<tr id="product-' + data[index].externalProductId + '" class="clickableRow" href="/'+data[index].url+'/"><td>' + data[index].title + '</td></tr>');
}
});
}, "json");
}, 400, 'keyup');
$(".clickableRow").click(function() {
console.log('Row Clicked');
window.document.location = $(this).attr("href");
});
click()
函数无法识别动态添加的元素。
您必须像这样使用事件委托:
$(document).on('click', '.clickableRow', function() {
console.log('Row Clicked');
window.document.location = $(this).attr("href");
});
我有一个 table 拖车,可以通过以下方式点击:
$(".clickableRow").click(function() {
console.log('Row Clicked');
window.document.location = $(this).attr("href");
});
页面加载后效果很好。但是,我们添加了一个搜索功能,可在 Ajax 调用后动态添加行。
调用完成后,这些行将不再可点击。
$('#carName').changeOrDelayedKey(function(e) {
var carSearch = $(this).val();
console.log(carSearch);
var carRows = $('#carTable tr[id^="product-"]');
$(carRows).each(function () {
console.log('This:'+this);
$(this).remove();
});
//Get new data
$.post("search.php", {s: carSearch}, function (data) {
console.log(data);
$.each(data, function (index) {
if ($('#product-' + data[index].externalProductId + '').length == 0) {
$('#carTable').append('<tr id="product-' + data[index].externalProductId + '" class="clickableRow" href="/'+data[index].url+'/"><td>' + data[index].title + '</td></tr>');
}
});
}, "json");
}, 400, 'keyup');
$(".clickableRow").click(function() {
console.log('Row Clicked');
window.document.location = $(this).attr("href");
});
click()
函数无法识别动态添加的元素。
您必须像这样使用事件委托:
$(document).on('click', '.clickableRow', function() {
console.log('Row Clicked');
window.document.location = $(this).attr("href");
});