对于伪代码感到抱歉,但我无法在此处发布原始代码(公司政策)。
我有两个"班级"在javascript中,我使用类CLS2来填充来自服务器的HTML(实际上它是一个表)。我在jquery中使用LOAD方法。
类CLS1调用CLS2加载HTML表,并在尝试使用jquery方法FIND从表中获取一些信息后。
我知道发生了什么。当我试图在表格中获取这些信息时,我无法做到这一点,因为HTML表格还没有准备好。
但是如果我使用jquery方法WHEN,我猜,我应该能够做到这一点。但它到目前为止还不起作用。
如果我在jquery LOAD方法上使用回调,一切正常,但是当我正在使用WHEN时它没有等待HTML表准备好。
我忘记了什么吗?
我从jquery LOAD方法返回。如果内容准备就绪,是否可以检查此退货?的的console.log(retParam);
CLS2:
var cls2 = (function ($) {
return {
load: function() {
return this.populateDiv();
},
populateDiv: function() {
var ret = $('#content').load('url', function(){
// IF I USE THE JQUERY METHOD FIND HERE WORKS FINE
});
return ret;
}
};
}(jQuery));
CLS1:
var cls1 = (function ($) {
return {
init: function(){
this.config();
},
config: function() {
$.when(cls2.load()).then(this.doPagination());
},
doPagination: function(retParam) {
console.log(retParam);
var val = $('#datatable').find('.tdActive').val();
}
};
}(jQuery));
JQUERY Ready
$(document).ready(){
cls1.init();
}
答案 0 :(得分:2)
加载返回jQuery
,而非承诺。如果你用.load()
代替.get()
,因为.get()会返回一个你可以做的承诺(实际上是一个jqXhr)。
类似
var ret = $.get( "url", function( data ) {
$( '#content' ).html( data );
});
return ret;