我正在编写一个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);
有人可以解释为什么这不起作用吗?
答案 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调用。只需在调用之前存储对象,并在需要时使用它。