我已经在下面编写了一个jQuery插件,并且希望能够为元素上的同一实例再次调用它。调用jQuery插件的相同实例
插件去...
(function($) {
$.fn.myPlugin = function(options){
var settings = {
color: null
};
if (options) {
$.extend(settings, options);
}
return this.each(function(){
var self = this;
var pics = $('li', self);
function refresh() {
pics = $('li', self);
};
$('a', self).click(function(){
pics.filter(':last').remove();
alert(settings.color);
refresh();
return false;
});
});
}
})(jQuery);
在这个被称为网页...
$('#test').myPlugin({ color: 'blue' });
现在我想呼吁相同的实例相同的插件,但把这个字符串refresh
作为选项,而所有其他变量是相同的(所以颜色仍然是blue
)例如..
$('#test').myPlugin('refresh');
然后这将执行refresh()
函数。
我怎么能达到上述目的?
编辑:为了让它更清晰,我正在考虑jQuery UI如何做他们的插件。在sortable插件中,您可以在同一元素上执行$("#sortable").sortable();
然后$("#sortable").sortable('refresh');
。这是我想要实现的。
click事件应该已经都需要......它没有做的,是参考? –
忘记点击事件,那只是插件的一个例子。我基本上希望能够在同一个实例上调用刷新功能。 – fire
正如Korvin所建议的,'.data()'是常见的做法,只需关闭jQuery对象并将其作为一个已命名的数据项存储在Object上即可。 Bootstrap为此提供了[很好的示例](http://twitter.github.com/bootstrap/javascript.html)。 例如,您也可以存储使用数据而不是整个闭包,[html5sortable](https://github.com/farhadi/html5sortable/blob/master/jquery.sortable.js#L16)。此外,您甚至可以将用于您控制的其他地方的值存储起来。 – okm