我正在尝试了解Swipebox插件中的一些代码。
声明了一个函数。
$.swipebox = function( elem, options ){
// plugin Jquery codes..
}
现在这个代码我真的不明白。 这段代码的主要目的是什么?为什么它会将功能保存到元素中?
$.fn.swipebox = function( options ) {
if ( ! $.data( this, '_swipebox' ) ) {
var swipebox = new $.swipebox( this, options );
this.data( '_swipebox', swipebox );
}
return this.data( '_swipebox' );
};
为什么不运行swipebox(this,options);?
$.fn.swipebox = function( options ) {
$.swipebox(this, options);
};
我也不明白在声明函数时使用$ .swipebox而不是使用swipebox。
答案 0 :(得分:1)
swipebox的方式可以避免声明任何新的全局变量。
他们的构造函数是$.swipebox()
,他们的jQuery方法是$.fn.swipebox()
,它可以作为$(".selector").swipebox(...)
在jQuery对象上调用。
this.data( '_swipebox', swipebox );
将swipeBox对象(由swipeBox构造函数创建)与实际DOM对象相关联,因此当DOM对象上发生任何类型的事件时,某些代码可以找到该DOM对象已存在的swipebox对象(再次没有创建任何新的全局变量来跟踪这一点)。这样,DOM对象指向swipebox对象(通过.data()
关联),swipebox对象包含相关的DOM对象,因此每个对象都可以根据需要到达另一个对象。