我正在构建一个jQuery插件,我想实现一个只应运行的函数,如果一个选项设置为true
。默认情况下,此选项为false
。
如果用户想要使用该功能,则需要另一个选项,因为该功能需要页面的一个元素,该元素应该传递给所需的选项。
我怎样才能做到这一点?
我仍在构建插件的主要结构,因此目前没有定义任何实际操作,但这是插件的结构。
/**
* Parallax Plugin API
* @type {function}
*/
(function( $, window, document, undefined ) {
/**
* Parallax prototype
* defines the functionality of the plugin
* @type {Object}
*/
var Parallax = {
/**
* Initialize the parallax effect
* @param {string || object} options [options passed]
* @param {object} element [$('.element').parallax( options )]
*/
init: function( options, element ) {
var self = this;
self.element = element;
self.$element = $( element );
/**
* Define self.options by overwriting the default options by the passed ones
* @type {object}
*/
self.options = $.extend( {}, $.fn.parallax.options, options );
/**
* Call the cycle function to navigate through the API
*/
self.cycle();
},
/**
* Cycle through the API
*/
cycle: function() {
var self = this;
/**
* Listen for scroll variable changes
* Call the refresh function, if variable has changed
*/
events.on( 'scrollChanged', self.refresh() );
},
/**
* Refresh the animation
*/
refresh: function() {
var self = this;
}
};
/**
* Actual plugin function which is called by .parallax()
* @param {string || object} options [options passed]
* @return {object} [return jQuery object to allow chaining]
*/
$.fn.parallax = function( options ) {
return this.each(function() {
var parallax = Object.create( Parallax );
parallax.init( options, this );
});
};
/**
* Set the default options
* @type {Object}
*/
$.fn.parallax.options = {
direction: 'up',
initOffset: '100%',
speed: relative,
relativeTo: $('.element')
};
})( jQuery, window, document );
如您所见,有一个relativeTo
功能。原因是我已经构建了一个以计算速度移动parallaxing元素的功能,因此它在用户的视口中居中,与relativeTo
- 元素在视口中居中的时间完全相同。
如果speed
选项设置为relative
,则用户必须传递元素:relativeTo
,如果是另一个值(fast
,slow
)设置为speed
选项,不需要relativeTo
。