zoukankan      html  css  js  c++  java
  • jQuery 插件简单模板

    /*!
     * Copyright yunos.com All rights reserved.
     * jquery.scrollspy.js
     * @author v10258@qq.com
     * @version 0-0-1
     */
    (function ($) {
    
        // contructor function
        var ScrollSpy = function (element, options) {
            this.element = $(element);
            this.options = $.extend({}, ScrollSpy.defaults, options || {});
            this.anchorArr = $(element).find('a');
            this.init();
        };
    
        // default config
        ScrollSpy.defaults = {
            scrollEle: $(window)
        };
    
        // prototype
        ScrollSpy.prototype = {
            constractor: ScrollSpy,
            init: function () {
                var self = this,
                    element = this.element,
                    scrollEle = this.options.scrollEle,
                    anchorData,
                    scrollTop;
    
                scrollEle.on('scroll', function () {
                    // The realization of the bad dynamic acquisition
                    anchorData = self.getAnchorData();
                    scrollTop = $(this).scrollTop();
                    for (var i = 0, len = anchorData.length; i < len; i++) {
                        if (anchorData[i].min <= scrollTop && scrollTop < anchorData[i].max) {
                            $(anchorData[i].author).parent().addClass('current').siblings().removeClass('current');
                            break;
                        }
                    }
                });
            },
            getAnchorData: function () {
                var anchorArr = this.anchorArr,
                    active,
                    activeDom,
                    anchorTargetArr = [];
    
                anchorArr.each(function (i, n) {
                    active = $($(this).attr('href'));
                    activeDom = active[0];
                    anchorTargetArr.push({
                        ele: activeDom,
                        author: this,
                        min: active.offset().top,
                        max: active.offset().top + active.height()
                    });
                });
                return anchorTargetArr;
            },
            distroy: function(){
                this.element.removeData('scrollspy');
                this.options.scrollEle.off('scroll');
            }
        };
    
        // bridging
        $.fn.scrollspy = function (option) {
            return this.each(function () {
                var $this = $(this),
                    data = $this.data('scrollspy'),
                    options = typeof option == 'object' && option;
    
                if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)));
                if (typeof option == 'string') data[option]();
            });
        };
    })(jQuery);

      个人感觉,写插件,插件的具体结构,能用原生结构,还是用原生结构的好,最后桥接在jquery上.

      如果像下面这样,看起来是不是有点 蛋疼呢。

    (function ($) {
        $.love.defaults = {
            // ......
        };
        $.love = function (element, o) {
            this.element = element;
            this.options = $.extend({}, $.love.defaults, o);
            // ......
        };
    
        var $love = $.love;
        $love.fn = $love.prototype = {
            verson: '0.0.1'
            // ......
        };
        $love.fn.extend = $love.extend = $.extend;
    
        $love.fn.extend({
            metod: function () {
                
            }
            // ......
        });
    
        $.fn.ilove = function (o) {
            // ......
        };
    })(jQuery);
  • 相关阅读:
    快速排序
    fedora 配置
    while与do while
    switch选择结构
    if选择结构
    java有参
    java猜拳
    java类的无参方法
    java类与对象
    java数组
  • 原文地址:https://www.cnblogs.com/v10258/p/3615553.html
Copyright © 2011-2022 走看看