【问题标题】:How to return $(this)如何返回 $(this)
【发布时间】:2011-03-04 03:42:57
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery html json jquery-plugins


    【解决方案1】:

    听起来您想将对象返回给原始调用者。

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

    【讨论】:

      【解决方案2】:

      我(最后)在您的另一个问题中发表了评论。 :o) 我很确定你需要在你的插件中这样做:

      defaults.callback.call(this,html);
      

      代替:

      defaults.callback(html);
      

      【讨论】:

        猜你喜欢
        • 2016-07-23
        • 2017-06-23
        • 2011-11-19
        • 1970-01-01
        • 1970-01-01
        • 2014-01-16
        • 2021-09-05
        • 2017-02-28
        • 1970-01-01
        相关资源
        最近更新 更多