我正在尝试创建一个小 jquery 插件,但我遇到的问题是,如果我为几个不同的 div 调用它几次,最后一次调用会覆盖所有其他调用,我会在每个 div 上得到最后一个结果。
<div class="p1"><p>text 1</p></div>
<div class="p2"><p>text 2</p></div>
<div class="p3"><p>text 3</p></div>
JS:
var changeColor = {
init: function(options, elem) {
var self = this;
self.elem = elem;
self.options = $.extend( {}, $.fn.changeColor.options, options );
self.blueColor();
},
blueColor: function() {
var self = this;
$('p').css('color', self.options.color);
}
};
$.fn.changeColor = function( options ) {
return this.each(function() {
var color = Object.create( changeColor );
color.init( options, this );
$.data( this, 'changeColor', color );
});
};
$.fn.changeColor.options = {
color: 'green'
};
(function() {
$('.p1').changeColor({color: 'yellow'});
$('.p2').changeColor({color: 'blue'});
})();
现在两个<p>
div 中的两个都是蓝色的,而不是第一个是黄色的,第二个是蓝色的。