2012-05-21 75 views
1

如何让此插件代码接受默认选项?jQuery插件;无法使用默认设置

// Utility 
if (typeof Object.create !== 'function') { 
object.create = function(obj) { 
    function F(){}; 
    F.prototype = obj; 
    return new F(); 
}; 
} 

(function($, window, document, undefined) { 
var Super = { 
    init: function(options, elem) { 
     var self = this; 

     self.elem = elem; 
     self.$elem = $(elem); 

     //self.alertbox(options.alertmsg);  
     self.loadingBar(options.duration); 

     if (typeof options === 'string') { 
      self.search = options; 
     } else { 
      // object was passed 
      self.search = options.search; 
     } 


     self.options = $.extend({}, $.fn.superHero.options, options); 


    }, 

    alertbox: function(message) { 
     var self = this; 

     alert(message); 

    }, 

    loadingBar: function(duration) { 
     var self = this; 

     $('#loadingBar').animate({ 
      width: 699    
     }, duration); 



    }, 


}; 

$.fn.superHero = function(options){ 
    return this.each(function() { 

     var hero = Object.create(Super); 
     hero.init(options, this); 

     $.data(this, 'superHero', hero); 

    }); 

}; 

$.fn.superHero.options = { 
    alertmsg: 'Hello World!', 
    duration: 8000, 
}; 

})(jQuery, window, document); 

这些选项只在调用插件时在索引页中定义它们时才起作用。

我该怎么做才能让选项有一个默认值被用户覆盖而不是被用户需要?

+0

原来我需要打电话; self.loadingBar(self.options.duration); 而不是 self.loadingBar(options.duration); 不知道有什么区别;我所知道的是它的作品。 –

回答

0

原来我需要打电话;

self.loadingBar(self.options.duration); 

,而不是

self.loadingBar(options.duration); 

不知道有什么区别;我所知道的是它的作品。

相关问题