jQuery插件-如何/在何处存储数据以及如何在方法之间共享?
鉴于这种结构:jQuery插件-如何/在何处存储数据以及如何在方法之间共享?,jquery,jquery-plugins,Jquery,Jquery Plugins,鉴于这种结构: (function($) { var defaults = { dragDelay: 200, // tap/hold this long to activate dragging feedback: 'glow', // feedback to show drag mode (glow/pulsate) glowColor: '#fff' // color of the glow if feedbac
(function($) {
var defaults = {
dragDelay: 200, // tap/hold this long to activate dragging
feedback: 'glow', // feedback to show drag mode (glow/pulsate)
glowColor: '#fff' // color of the glow if feedback==glow
};
var methods = {
init: function(options) {
return this.each(function() {
options = $.extend({}, defaults, options);
var $this = $(this);
$this.bind('click', methods.doSomething);
});
},
doSomething: function(e) {
//...
}
};
$.fn.myPlug = function(method) {
if (methods[method])
return methods[method].apply(this,
Array.prototype.slice.call(arguments, 1));
else if (typeof method === 'object' || !method)
return methods.init.apply(this,
arguments.length > 0 ? arguments : [defaults]);
else
$.error("TypeError: Plugin 'myPlug' has no method '" + method +
"'");
}
})(jQuery);
最好使用
$(this).data()
存储数据,还是使用this.someVar=x
?另外,如何让init()方法与其他方法共享“选项”?如果您正在创建一些可视化小部件,那么您可以创建自定义jQuery UI小部件(它有很好的技术):
但如果不是,那么最好使用$(this).data(…)
来存储某个对象的个人数据
如何获取
init()
方法?您还可以使用.data()
方法存储它。如果您正在创建一些可视化小部件,那么您可以创建自定义的jQuery UI小部件(它有很好的技术):
但如果不是,那么最好使用$(this).data(…)
来存储某个对象的个人数据
如何获取init()
方法?您也可以使用.data()
方法存储它