我觉得我疯了。
我想做的就是获取通过AJAX加载的数据的维度,而不管调用的次数。它第一次运行正常,但每次后续调用时我总是得到0值 - 尽管它出现在页面上,正如人们所期望的那样。
// The AJAX part
function getDetails(request){
$placehold.empty();
return jQ.get(request);
};
// Filter & render AJAX data
function renderData(data){
var endResult = $(data).find('#productDetails');
endResult.fadeTo(0,0).appendTo($placehold);
$placehold.removeClass('loading');
endResult.fadeTo(300,1); // <- Added as per request
// Console log previously uncalled data works fine
// Called again, I get zero every single time
console.log( jQ('#anyElementInAJAXData').outerHeight(false) );
};
// Click handler
jQ('#slides').on('click', '.slideLink', function(e){
e.preventDefault();
var target = jQ(this).attr("href");
$placehold.fadeIn(360).addClass('loading');
getDetails(target)
.done( function(result) {
renderData(result);
})
});
我做错了什么?
答案 0 :(得分:0)
你的问题似乎在于endResult.fadeTo(0,0).appendTo($ placehold);方法。 appendTo只会在fadeTo完成后发生,但是你的方法的其余部分在fadeTo刚刚启动时执行。这可能会解决它:
var endResult = $(data).find('#productDetails');
endResult.fadeTo(0,0, function() {
$(this).appendTo($placehold);
$placehold.removeClass('loading');
$(this).fadeTo(300,1); // <- Added as per request
// Console log previously uncalled data works fine
// Called again, I get zero every single time
console.log( jQ('#anyElementInAJAXData').outerHeight(false) );
});