jQuery扩展(范围?)问题

时间:2009-11-20 21:53:39

标签: 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); }, "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();
});

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

1 个答案:

答案 0 :(得分:3)

我不确定你的意思,但你可能只需要返回this继续链接:

$.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");
        });
    });
}