jQuery插件Dev问题:这和getJSON无法正常工作

时间:2014-08-26 21:22:32

标签: javascript jquery

我正在编写一个jQuery插件。它应该从JSON API获取数据并将结果放在指定的位置。因此,我使用$.getJSON来获取所需的JSON。

$.getJSON的回调中,我尝试使用.html()在指定位置输出数据。当我打开一个演示时,没有任何输出,Chrome Devtools表示“未定义”不是一个功能'。

这是我的代码:

;(function($, window, document, undefined) {

    $.fn.hipsum = function(options) {

        ...

        var data = $.getJSON(url, function(data){
            this.html(data);
        });

    };

})(jQuery, window, document);

有人可以解释为什么这不起作用吗?

2 个答案:

答案 0 :(得分:2)

一旦回调方法被击中,“this”不再代表jQuery对象。你需要在回调范围之外引用“this”对象,然后在方法中再次使用它作为例子,下面是“self”。

;(function($, window, document, undefined) {
    $.fn.hipsum = function(options) {
        var self = this;
        var data = $.getJSON(url, function(data){
            self.html(data);
        });

    };

})(jQuery, window, document);

答案 1 :(得分:1)

当@kJ Price回答时,当你到达回调时,上下文会发生变化,而这不再是第一个对象,而是ajax调用。只需在调用之前存储对象,并在需要时使用它。