我正在尝试从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/

10-09 17:04