我對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();
});
到海報()在準備功能的初始調用工作,但handle_storage()回調裏面,我得到一個「海報()是未定義」的錯誤。是什麼賦予了?
你可能有'自我= $的問題(這一點);'互聯網資源管理器(我得到「未實現的錯誤」),因爲self是窗口對象的屬性。然而,使用var關鍵字('var self = $(this);')是有效的。 – 2009-11-20 22:04:59