我已經在下面編寫了一個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