Javascript jQuery扩展(范围?)问题

Javascript jQuery扩展(范围?)问题,javascript,jquery,Javascript,Jquery,我对jQuery扩展没有像我预期的那样工作感到困惑。我定义了以下函数: $.fn.poster = function() { this.each(function() { self = $(this); self.click(function() { /* does stuff */ $.post(url, data, function(d, t) { handle_storage(d, t, self);

我对jQuery扩展没有像我预期的那样工作感到困惑。我定义了以下函数:

$.fn.poster = function() {
    this.each(function() {
        self = $(this);
        self.click(function() {
            /* does stuff */
            $.post(url, data, function(d, t) { handle_storage(d, t, self); }, "json");
        });
    });
}

handle_storage = function(storages, status, caller) {
    container = $("<div>");
    $("<span>").poster().html(storage.name).appendTo($("<li>").addClass("folder").appendTo(container));
}

$(function() {
    $("li.storage span").poster();
});
$.fn.poster=函数(){
这个。每个(函数(){
self=$(本);
self.click(函数(){
/*做事情*/
$.post(url,数据,函数(d,t){handle_存储(d,t,self)},“json”);
});
});
}
handle_storage=函数(存储、状态、调用方){
容器=$(“”);
$(“”).poster().html(storage.name).appendTo($(“
  • ”).addClass(“文件夹”).appendTo(容器)); } $(函数(){ $(“li.storage span”).poster(); });

  • ready函数中对poster()的初始调用有效,但在handle_storage()回调中,我得到一个“poster()未定义”错误。给出了什么?

    我不太清楚您的意思,但您可能只需要返回
    以继续链接:

    $.fn.poster = function() {
        return this.each(function() {
            self = $(this);
            self.click(function() {
                /* does stuff */
                $.post(url, data, function(d, t) { handle_storage(d, t, self); }, "json");
            });
        });
    }
    

    doh。是 啊我只是把“returnthis;”放在$.fn.poster()定义的末尾,一切都很好。谢谢。是的,或者按照我写的做,在这之前写上回执。每个。。不管哪种方法都行,回答得很好。他的函数返回未定义的
    。我还将添加
    var
    ,因此它的内容为
    var self=$(这个)将其范围限定到该函数。现在它是全局的。您可能对
    self=$(这个)有问题var self=$(this);
    )是可行的。