Javascript jQuery扩展(范围?)问题
我对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);
$.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=$(这个)有问题在Internet Explorer中(我得到一个“未实现错误”),因为self是窗口对象的属性。但是,使用var关键字(var self=$(this);
)是可行的。