无法在后续调用中获取AJAX数据的维度

时间:2013-04-18 17:45:24

标签: jquery

我觉得我疯了。

我想做的就是获取通过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);
        })
});

我做错了什么?

1 个答案:

答案 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) );
});