模块模式,jquery回调问题;

时间:2013-10-03 20:20:40

标签: javascript jquery

对于伪代码感到抱歉,但我无法在此处发布原始代码(公司政策)。

我有两个"班级"在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();

}

1 个答案:

答案 0 :(得分:2)

加载返回jQuery,而非承诺。如果你用.load()代替.get(),因为.get()会返回一个你可以做的承诺(实际上是一个jqXhr)。

类似

var ret = $.get( "url", function( data ) {
  $( '#content' ).html( data );
});

return ret;