我需要在将ajax数据附加到div之前预加载ajax数据,并且我有这个代码:
$.ajax({
url: 'ajax.php',
data: { modelID:id },
type: 'post',
success: function(result){
$(result).load(function(){
$('.view_'+id).html(result)
$('.view_'+id).find('.brandModelGallery').bxSlider({})
$('.view_'+id).addClass('loaded')
})
}
})
这不会返回任何东西。如果将其写为$('.view_'+id).load(result)
,那么我可以在控制台中看到result
的所有内容作为语法错误,因此它可以正常获取它们,但不是这样。那是为什么?
答案 0 :(得分:0)
我在jsfiddle
上创建了一个示例HTML:
<div id="d1"></div>
<div id="d2"></div>
JS:
$.ajax({
url: './',
data: { modelID: '1' },
type: 'post',
success: function(result){
console.log(result);
$('#d1').html(JSON.stringify(result));
// A fake object as your result.
var bxSlider = $('<ul class="bxslider"><li><img src="https://i.imgur.com/KsV6jS5.png" /></li><li><img src="https://i.imgur.com/bqcK47I.png" /></li></ul>');
// Do thing only when all img loaded.
var unLoadimges = bxSlider.find("img").length;
bxSlider.find('img').load(function() {
--unLoadimges;
console.log("loaded, left: " + unLoadimges);
if (unLoadimges === 0) {
bxSlider.appendTo($("#d2")).bxSlider();
}
});
}
})
将img
元素追加到页面时,并不意味着它已加载。听取它的load
事件。
编辑:现在让bxSlider适用于我的示例。 不确定是否有更好的方法来检查是否所有图像都已加载。