我正在尝试从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。
最佳答案
swipebox的操作方式避免了声明任何新的全局变量。
他们的构造函数是$.swipebox()
,而jQuery方法是$.fn.swipebox()
,可以在jQuery对象上将其作为$(".selector").swipebox(...)
调用。this.data( '_swipebox', swipebox );
将swipeBox对象(由swipeBox构造函数创建)与实际的DOM对象相关联,因此,当DOM对象上发生任何类型的事件时,某些代码可以找到该DOM对象已经存在的swipebox对象(同样无需创建任何对象)新的全局变量以对此进行跟踪)。这样,DOM对象(通过.data()
关联)指向swipebox对象,并且swipebox对象包含相关的DOM对象,因此每个对象都可以根据需要相互访问。
关于javascript - 为什么要使用data()将函数存储在元素上?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30991034/