我有这个非常老的无保留插件,简而言之就是这样构造:
插件本身工作正常,但我需要访问一些原型方法。
var $el = $.find('myEl');
$el.searchlight(foo, bar);
$el.clearResults() //this throws an exception
当我调用原型方法时,我得到一个例外,该方法不存在。我是否在原型上遇到了完全错误的问题,或者我只是以错误的方式使用它。(如果需要,我可以破解图书馆,因为它已经7年没有维护了。)
另一个问题是如何让初始化程序返回元素本身,我只需要添加'返回this.each'作为$ .fn.searchlight中的最后一句话?
答案 0 :(得分:1)
要解决此问题,您可以将插件实例存储在元素的data
属性中。然后,您可以根据需要调用该函数上的方法,如下所示:
// in plugin:
$.fn.searchLight = function(url, options) {
return this.each(function() {
$(this).data('searchlight', new SearchLight(this, url, options));
});
};
// in the calling code, instantiate
var $el = $('.searchLightElement').searchLight(foo, bar);
// then use the methods of the plugin
$el.data('searchlight').clearResults();