假设这是插件的初始化:
$(document).ready(function() {
$("#tree").fname({
animSpeed: 0
});
});
现在,我想调用另一个方法并保持animSpeed值:
$('#tree').fname('expand');
但是,使用我当前的代码,animSpeed值将丢失,并且在expand方法调用中使用默认值(它在init中有效)。我怎么能改变这个?
当前代码:
;(function($){
$.fn.fname = function(method) {
var defaults = {
animSpeed : 'fast'
};
var option = {};
var methods = {
init: function(options) {
option = $.extend(defaults, options);
return this.each(function() {
code...
});
},
expand: function() {
return this.each(function() {
$(this).children('li').slideDown(option.animSpeed);
});
}
};
};
}(jQuery));
答案 0 :(得分:4)
您应该将原始选项存储在要调用的元素的data
中:
return this.each(function() {
$(this).data('fname-options', options);
// Code...
});
以便以后可以通过其他方法访问它:
expand: function() {
return this.each(function() {
var $this = $(this),
options = $this.data('fname-options');
$this.children('li').slideDown(options.animSpeed);
});
}