请考虑以下代码:
function autoRecursiveLoad(checkingElementId) {
if (checkingElementId.length) {
return;
}
else {
var targetId = $("#targetContent");
var requestUrl = $('#ajaxUrl').val();
$.ajax({
url: requestUrl,
cache: false,
type: "POST",
async:false,
beforeSend: function(){
},
complete: function(){
autoRecursiveLoad(checkingElementId);
},
success: function(data) {
targetId.append(data);
},
error: function(e) {
}
});
}
}
代码中的:checkingElementId
是动态生成元素的id。我使用checkingElementId.length
查看它是否已经存在,如果没有,发送ajax请求加载内容,创建id为checkingElementId
的div然后追加到targetId
,然后执行递归调用
问题是id为checkingElementId
的div是否已成功生成,但检查它是否存在的代码(checkingElementId.length
)从未起作用。因此,上述功能将永远循环。我做错了吗?
答案 0 :(得分:0)
我不知道它是否是最佳解决方案,但这对我有用,我会动态触发DOMNodeInserted事件,因此该函数更新如下:
function autoRecursiveLoad(checkingElementId) {
$(document).on('DOMNodeInserted', checkingElementId, function () {
// do something when the new dynamically generated item (checkingElementId) added to the page
});
if (checkingElementId.length) {
return;
}
else {
var targetId = $("#targetContent");
var requestUrl = $('#ajaxUrl').val();
$.ajax({
url: requestUrl,
cache: false,
type: "POST",
async:false,
beforeSend: function(){
},
complete: function(){
autoRecursiveLoad(checkingElementId);
},
success: function(data) {
targetId.append(data);
},
error: function(e) {
}
});
}
}