如何退货$(这)

时间:2010-06-15 19:02:42

标签: javascript jquery html json jquery-plugins

我正在使用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)并运行回调?

2 个答案:

答案 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 发布之后执行,而不是在完成之后执行,但这是正常的,可能是你想要的。