我有一个包含长分页内容的页面。现在为了访问一个项目,我想加载页面,直到找到所需的项目。问题是我的“while”循环总是进入无限循环。经过一些研究,我发现由于 ajax 的异步行为,它永远找不到元素。这是我正在使用的代码
用于加载内容直到找不到元素的 While 循环:
$(document).ready(function(){
if(document.getElementById('selectedItem')) {
totalPages = $("#selectedItem").attr("totalPages");
trgtElementUrl = $("#selectedItem").val();
var targetElement = $("#" + trgtElementUrl);
i = 2;
//getting $('#'+trgtElementUrl).length always 0
while(!($('#'+trgtElementUrl).length)) {
$('#page' + i).trigger("click");
i++;
}
target_top = $('#'+trgtElementUrl).offset().top;
target_top = target_top - 10;
$('html, body').animate({scrollTop:target_top}, 500);
$(".summaries li").removeClass();
$('#'+trgtElementUrl).addClass('active');
}
});
并通过触发点击事件进行ajax调用
$('a.loadMore').live("click",function(event){
$(this).hide();
$(".loaderImage").show();
event.preventDefault();
var link = $(this).attr("href");
$.ajax({
url: link,
dataType: "html",
success: function(data) {
if($('a.loadMore').parent().parent().hasClass('advertisingGrid')){
var items = $(data).find('ul.advertisingGridItems').html();
$(items).hide().appendTo('ul.advertisingGridItems').show('normal');
} else {
var items = $(data).filter('ul.summaries').html();
var subnav = $(data).filter('nav.subnav');
var itemLinks = $(subnav).find('ul').html();
$('div#pagination').remove();
$(items).appendTo('ul.summaries');
$(itemLinks).appendTo('.subnav ul');
}
$(".loaderImage").hide();
}
});
return false;
});
这始终适用于同步 ajax 调用。是否可以在没有同步 ajax 调用的情况下使其工作。谢谢