zoukankan      html  css  js  c++  java
  • jQuery 插件入门

    先看http://www.cnblogs.com/lideng/p/3605551.html

    http://www.cnblogs.com/xcj26/p/3345556.html (非常细致  很多你会想到的问题在这里都有答案)

    第一篇博文讲到给jquery增加方法的两种方式

    静态方法和 jquery对象的方法

    像$.each  这种就属于静态方法   $('xxx').on(...) jquery对象的方法

    $.extend(object) 可以理解为JQuery 添加一个静态方法。

    $.fn.extend(object) 可以理解为JQuery实例添加一个方法。

    这是雨夜带刀以前写的一个jQuery 插件

    http://stylechen.com/jquery-tabs.html

    /* =================================================
    // jQuery Tabs Plugins 1.0
    // author:chenyg@5173.com
    // URL:http://stylechen.com/jquery-tabs.html
    // 4th Dec 2010
    // =================================================*/
    // 第一个; 是为了防止和之前没有写;作为结束语句的js发生冲突
    ;(function($){
        $.fn.extend({
            Tabs:function(options){
                // 处理参数
                options = $.extend({
                    event : 'mouseover',
                    timeout : 0,
                    auto : 0,
                    callback : null
                }, options);
    
                var self = this,   //原来这里写的是 $(this)  但是这里的this 已经是一个Jquery对象了 这个this就是调用Tab那个元素的Jquery对象  也就是$('.demo1')
                    tabBox = self.children( 'div.tab_box' ).children( 'div' ),
                    menu = self.children( 'ul.tab_menu' ),
                    items = menu.find( 'li' ),
                    timer;
                // elem是一个Tab head
                var tabHandle = function( elem ){
                        elem.siblings( 'li' )
                            .removeClass( 'current' )
                            .end()
                            .addClass( 'current' );
                        //关于end()
                        //end() 相当于返回初始选择器的结果  这里经过一次 end()操作后 再次得到elem对象
                        // 其实相当于
                        // elem.siblings('li').remove('current');
                        // elem.addClass('current');
                        tabBox.siblings( 'div' )
                            .addClass( 'hide' )
                            .end()
                            .eq( elem.index() )
                            .removeClass( 'hide' );
                        // $().index()   返回选择的元素在同级别元素索引的位置
                    },
    
                    delay = function( elem, time ){
                        time ? setTimeout(function(){ tabHandle( elem ); }, time) : tabHandle( elem );
                    },
    
                    start = function(){
                        if( !options.auto ) return;
                        timer = setInterval( autoRun, options.auto );
                    },
    
                    autoRun = function(){
                        var current = menu.find( 'li.current' ),
                            firstItem = items.eq(0),
                            len = items.length,
                            index = current.index() + 1,
                            item = index === len ? firstItem : current.next( 'li' ),
                            i = index === len ? 0 : index;
    
                        current.removeClass( 'current' );
                        item.addClass( 'current' );
    
                        tabBox.siblings( 'div' )
                            .addClass( 'hide' )
                            .end()
                            .eq(i)
                            .removeClass( 'hide' );
                    };
                /* items 是Tab head */
                items.bind( options.event, function(){
                    /*事件绑定里面的this 就是触发该事件的元素(不是jQuery对象) 在addEventListener中的也是如此  不过如果是时间代理就需要用到target了*/
                    delay( $(this), options.timeout );
                    if( options.callback ){
                        options.callback( self );
                    }
                });
    
                if( options.auto ){
                    start();
                    self.hover(function(){
                        clearInterval( timer );
                        timer = undefined;
                    },function(){
                        start();
                    });
                }
    
                return this;
            }
        });
    })(jQuery);
  • 相关阅读:
    hihoCoder#1142(三分求极值)
    hihoCoder#1095(二分搜索)
    hihoCoder#1139(二分+bfs)
    java亦或(^)
    JAVA线程
    java中io流浅析
    java循环
    java集合练习
    JAVA集合
    java面向对象(串)
  • 原文地址:https://www.cnblogs.com/cart55free99/p/4316880.html
Copyright © 2011-2022 走看看