【问题标题】:jQuery Plugin Dev problems: this and getJSON not workingjQuery 插件开发问题:this 和 getJSON 不起作用
【发布时间】:2014-08-27 05:29:44
【问题描述】:

我正在编写一个 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);

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    "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);
    

    【讨论】:

    • 先生,您是救生员。我会尽快接受这个答案。
    • Np,每个人都会遇到一两次这个问题:)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 2013-05-17
      • 2017-09-05
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多