2010-06-15 62 views
1

我正在使用jQuery并为一些内部工作制作了一个插件,这些插件基本上为我们的内部API构建了网址。无论如何,我想返回$(this),即时通讯没有得到正确的东西,即时通讯获取createdocumentfragment错误?

插件代码:

$.get(base_url,{ 
    agenda_id:defaults.id, 
    action:defaults.action+defaults.type, 
    output:defaults.output 
},function(html){ 
    defaults.callback(html); 
}); 

这工作正常,但我想补充的回报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)并运行回调?

回答

1

我(最后)在你的其他问题留下评论。 :O)我敢肯定,你需要做到这一点在你的插件:代替

defaults.callback.call(this,html); 

defaults.callback(html); 
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是发布后执行,而不是在完成后执行,但这是正常的,可能是您想要的。