避免为同一个选择器多次调用同一个javascript插件



这是我的插件代码:

( function() {
this.Modal = function( selector, options ) {
// Define option defaults 
var defaults = {
open: false
}
this.options = extendDefaults( defaults, options );
alert();
}
function extendDefaults( source, properties ) {
var property;
for ( property in properties ) {
if ( properties.hasOwnProperty( property ) ) {
source[ property ] = properties[ property ];
}
}
return source;
}
}() );

只是我需要一种方法来防止再次调用 SAME 选择器的插件(如果它已经调用

(。更清楚的是,如果我尝试通过这样做初始化插件:

var firstSeelctor = new Modal( '.button' );
var secondSeelctor = new Modal( '.button' );

我需要调用第一个并忽略第二个,因为它已经在第一个调用了相同的选择器。

您需要将选择器存储在已创建的某个位置(例如直接在函数构造函数中(,然后在每次创建实例期间对其进行检查。

(function() {
this.Modal = function modal(selector, options) {
if (!modal.instances) {
modal.instances = {};
}
if (modal.instances[selector]) {
return modal.instances[selector];
}
modal.instances[selector] = this;
var defaults = {
open: false
};
this.options = extendDefaults(defaults, options);
console.log('created for selector: ' + selector);
// alert();
}
function extendDefaults(source, properties) {
var property;
for (property in properties) {
if (properties.hasOwnProperty(property)) {
source[property] = properties[property];
}
}
return source;
}
var firstSeelctor = new Modal('.button');
var secondSeelctor = new Modal('.button');
var thirdSeelctor = new Modal('.button-2');

console.log(firstSeelctor === secondSeelctor); // true, because it's the same instances
}());

最新更新