我正在做一个ajax调用,它的工作正常。事情是,我需要图像的尺寸。我不能在html中声明这些维度,因为它们是动态调整大小的。现在,如果我在完成状态期间调用一个函数,为了获取这些维度,webkit浏览器输出0,而FF输出正确的维度。
$.ajax({
url: event.path,
cache: false,
error: function(XMLHttpRequest, textStatus, errorThrown) {
handler(XMLHttpRequest.responseText);
},
success: function(data, textStatus, XMLHttpRequest) {
handler(data);
},
complete: function() {
textBoxWidth();
}
});
这是被调用的函数
function textBoxWidth() {
$("#project .textBox").css("width", $("#project .imgBox:last img").width());
}
对此有何建议?我试过了
if (jQuery.browser.safari && document.readyState != 'complete')
但是一旦DOM准备就绪,文档状态根本没有变化..
感谢。
答案 0 :(得分:2)
另一个例子,关于如何让jquery在加载时等待jQuery.active。
它是一个吐出1的变量,如果jquery仍在加载则为0,如果完成则为0。
$.ajax({
url: path,
cache: false,
error: function(XMLHttpRequest, textStatus, errorThrown) {
handler(XMLHttpRequest.responseText);
},
success: function(data, textStatus, XMLHttpRequest) {
handler(data);
},
complete: function() {
if (jQuery.active !== 0) {
setTimeout( arguments.callee, 100 );
return;
}
//fancyFunction();
}
});
答案 1 :(得分:1)
好。经过一段时间的黑客攻击后,我尝试了以下的溶剂,这是有效的。
$.ajax({
url: event.path,
cache: false,
error: function(XMLHttpRequest, textStatus, errorThrown) {
handler(XMLHttpRequest.responseText);
},
success: function(data, textStatus, XMLHttpRequest) {
handler(data);
},
complete: function() {
var imgCount = $("#project .content").find("img");
if (imgCount.length > 0) {
if ($("#project .content img:last").width() == 0) {
setTimeout( arguments.callee, 100 );
return;
}
//fancyFunction();
}
}
});
所以我做了什么: 在我的目标div中寻找图像。 如果周围有图像,并且我最后一张图像的宽度等于零:重新检查宽度100毫秒后。 否则继续...