我写了一个像这样的jquery插件
(function($){
$.inspect = function(prodid, flag, callback){
//global plugin vars
var inspect, info, tabs, generalInfo;
var init = function(){
//build basic layout
//use of prodid and flag is ok
}
var fetch = function(){
//fetch data
//use of prodid and flag is ok
}
var render = function(){
//render data
//use of prodid and flag is ok
}
var empty = function(){
//reset to basic layout
//use of prodid and flag is ok
}
var listeners = function(){
//bind eventhandlers
//use of prodid or flag FAILS here
inspect.dialog('option','close', /* how to put callback here? */ callback );
}
//existing instance?
inspect = $(".inspectHolder");
if(inspect.length>0){//existing instance
inspect = $(".inspectHolder");
info = $(".inspectInfo", inspect);
tabs = $(".inspectTabs", inspect);
empty();
}
else{//new instance
init();
}
}
})
第一个插件调用
prodid = 100
$.inspect( prodid, 0, function(){
console.log(prodid);
});
第二个插件调用
prodid = 200
$.inspect( prodid, 0 , function(){
console.log(prodid)
});
现在我的问题如下:
绑定我的事件处理程序会使每个事件都使用第一个prodid(= 100),而不是我作为$ .inspect()调用的参数传递的那个... 其他一切都很好
我知道我可以为每个$ .inspect()调用创建一个新实例,但那将是不干净或明智的(memorymanagement?)(据我所知,对于编程来说还是一个新手)
我尝试使用callback.call(this,prodid)或类似的东西,但它更像是尝试看看会发生什么然后真正理解它是什么...一些体面的文档对此非常欢迎,因为我找到关于这个不足的jquery文档(或者我只是在查看某些内容)
非常感谢任何帮助!
身体