我正在使用jQuery并为一些内部工作制作了一个插件,它基本上为我们的内部API构建了URL。无论如何,我想返回$(this)并且我没有得到正确的东西,我得到一个createdocumentfragment错误?
插件代码:
$.get(base_url,{
agenda_id:defaults.id,
action:defaults.action+defaults.type,
output:defaults.output
},function(html){
defaults.callback(html);
});
工作正常,但我想像这样添加return obj:
$.get(base_url,{
agenda_id:defaults.id,
action:defaults.action+defaults.type,
output:defaults.output
},function(html){
defaults.callback(html);
return obj;
});
Obj设置在我的插件的开头,obj在整个插件中工作正常。它设置为obj=$(this);
在我使用插件的脚本中,我有:
$('#agenda-live-preview').agenda({action:'get',type:'agenda',id:window.location.href.split('/').pop(),callback:function(html){
$(this).empty().append($(html).html());
}});
然而,它不起作用并返回:
Error: doc.createDocumentFragment is not a function
Source File: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js
Line: 4373
在控制台错误日志中。任何想法如何返回$(this)并运行回调?
答案 0 :(得分:1)
我(最后)在你的另一个问题上发表评论。 :o)我很确定你需要在插件中执行此操作:
defaults.callback.call(this,html);
而不是:
defaults.callback(html);
答案 1 :(得分:0)
听起来您想将对象返回给原始调用者。
agenda = function(opts, callback) {
$.get(base_url,{
agenda_id:defaults.id,
action:defaults.action+defaults.type,
output:defaults.output
},function(html){
defaults.callback(html);
});
return obj;
}
我猜这个想法是启用链接,所以你可以说类似
$('#id').agenda(opts).show();
或其他什么。当然,这将在$ .get 发布之后执行,而不是在完成之后执行,但这是正常的,可能是你想要的。