我喜欢 jQuery 插件架构,但是,当我想保留对插件实例的引用以稍后在我的代码中访问属性或方法时,我发现它令人沮丧(可能是由于我缺乏理解)。
编辑:我想澄清一下,我真正想做的是保留对插件中使用的方法和属性的引用,以便以后可以使用它们
让我们以 AJAX 加载图标为例。在更传统的 OOP 环境中,我可以这样做:
var myIcon = new AJAXIcon();
myIcon.start();
//some stuff
myIcon.stop();
我的对象的方法和属性存储在一个变量中供以后使用。现在,如果我想在 jQuery 插件中拥有相同的功能,我会从我的主代码中调用它,有点像这样:
$("#myId").ajaxIcon()
按照惯例,我的插件需要返回传递给我的插件的原始 jQuery 对象,以实现可链接性,但如果这样做,我将失去访问插件实例的方法和属性的能力。
现在,我知道您可以在我的插件中声明一个公共函数,有点类似于
$.fn.ajaxIcon = function(options) {
return this.each(function () {
//do some stuff
}
}
$.fn.ajaxIcon.stop = function() {
//stop stuff
}
但是,在不打破返回原始 jQuery 对象的约定的情况下,我不能保留对我想要引用的插件的特定实例的引用。
我希望能够做这样的事情:
var myIcon = $("myId").ajaxIcon(); //myIcon = a reference to the ajaxIcon
myIcon.start();
//some stuff
myIcon.stop();
有什么想法吗?