我试图通过缓存已经被 AJAX 处理的数据来提高我的 AJAX 调用效率。我还需要根据某些结果数据的维度以某种方式呈现数据。
第一次调用数据时,可以读取维度,一切正常。缓存也可以很好地工作,但是我在获取缓存数据中元素的维度时遇到了很大的困难。
以下是我正在做的事情的简化版本(有相同的问题):
var cache = {};
// The AJAX part
function getDetails(request){
return jQ.get(request);
};
// Filter & render AJAX data
function renderData(data){
var endResult = $(data).find('#theTargetElement');
endResult.appendTo($placehold);
$placehold.find('#theTargetElement').css('visibility','hidden');
// This will log the dimensions on AJAX data fine
// But almost all cached data returns height 0
console.log( height of certain elements within data );
};
// Click handler
jQ('#slides').on('click', '.slideLink', function(e){
e.preventDefault();
var target = jQ(this).attr("href");
if ( cache[target] ) { // If the data exists in cache object
var $cached = cache[target]
renderData( $cached );
} else {
getDetails(target)
.done( function(result) {
cache[target] = result;
renderData(result);
})
}
});
附加的数据肯定存在并出现在页面上 - 我似乎无法使用它的测量值。