zoukankan      html  css  js  c++  java
  • 手写jQuery插件

    插件原理:

    jQuery插件就是用来扩展jQuery原型对象的一个方法,jQuery插件的使用方式就是jQuery对象方法的调用。

     $.fn=jQuery.fn=jQuery.prototype,也就是说jQuery.fn对象是jQuery的原型对象,jQuery的DOM操作方法都在jQuery.fn对象上定义的,然后jQuery对象就可以通过原型继承这些方法了。

    (function($){
        //插件名 navStyle
        $.fn.navStyle=function(options){//扩展方法
            //各种属性、参数
            var defaults={
            }
            //如果你在调用的时候写了新的参数,就用你新的参数,如果没有写,就用默认的参数。
            var options=$.extend(defaults,options);
            return this.each(function(){
                        //操作
                      })        
        }
    })(jQuery);
                        

    例:设置li的背景颜色、划动时显示的背景颜色以及点击时显示的背景颜色

    (function($){
        //插件名 navStyle
        $.fn.navStyle=function(options){
            //各种属性、参数
            var defaults={
                bgClass:'#ee2c2c',
                activeBgClass:"green",
                clickBgClass:"#cd22fe"
            }
            //如果你在调用的时候写了新的参数,就用你新的参数,如果没有写,就用默认的参数。
            var options=$.extend(defaults,options);
            return this.each(function(){
                var thisNav=$(this);
                //添加背景颜色
                $(thisNav).find('li').css('background',options.bgClass);
                
                var li=$(thisNav).find('li');
                //添加滑过时颜色
                for(var i=0;i<li.length;i++){
                    li.eq(i).bind('mouserover',function(){
                        $(this).css('background',options.activeBgClass);
                        $(this).siblings().css('background',options.bgClass);
                    })
                }
                //添加点击时的颜色
                for(var i=0;i<li.length;i++){
                    li.eq(i).bind('click',function(){
                        $(this).css('background',options.clickBgClass);
                        $(this).siblings().css('background',options.bgClass);
                    })
                }
                
            })
        }
    })(jQuery);

     html代码

    <script src="js/jquery-1.8.3.min.js"></script>
    <script src="js/NavUI.js"></script>
    <script>    
        $(function(){
               $('ul').navStyle({bgClass:'#0000FF',activeBgClass:"yellow"});
        })
    </script>

    插件调用时,插件内部的this就是当前调用插件的jQuery对象。

    $.extend()函数用于将一个或多个对象的内容合并到目标对象上

    如果在使用插件时仍然想链式调用其他方法,则在插件中添加代码 return this;  把当前的jQuery对象返回,然后就可以在插件后面继续调用其他jQuery方法了。

    JQuery中对"$"的理解:

    JQuery(或者是$)既可以作为函数使用,也可以做为对象使用;当作为函数使用时,类似于$(function(){})这样的形式;当作为对象使用时,类似于$.each()带点调用的形式。

    1、作为一般函数调用:$(params)

    (1)参数为函数:当DOM加载完成后,执行此回调函数;

    (2)参数作为选择器字符串:查找所有匹配的标签,并将他们封装成JQuery对象;

    (3)参数作为DOM对象:将DOM对象封装成JQuery对象。

    2、作为对象使用 $.xxx()

    (1)$.each() 遍历数组

    (2)$.trim()去除两端空格

    (3)$.extend()将多个对象合并成一个

  • 相关阅读:
    Python学习小目录汇总
    进制转换的知识
    计算机组成原理目录
    python基础知识-8-三元和一行代码(推导式)
    python基础知识-7-内存、深浅、文件操作
    IT工具使用
    Python基础知识-06-集合内存布尔False
    Python基础知识-05-数据类型总结字典
    elk收集tomcat日志
    pycharm重命名文件
  • 原文地址:https://www.cnblogs.com/xiaoan0705/p/10419644.html
Copyright © 2011-2022 走看看