我对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()未定义”错误。是什么给了什么?
答案 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");
});
});
}