JQuery扩展

1 扩展插件

jquery满足不了项目需求 但是我又想用jquery,依托于jquery 自己造轮子

1.1 扩展jQuery的工具方法

    $.extend(object)
/*扩展jQuery的工具方法: $.extend(object)
    * min(a,b) 返回较小的值
    * max(a,b) 返回较大的值
    * leftTrim() 去除字符串左边的空格
    * rightTrim() 去除字符串右边的空格
*/ 
/*
//正则(了解)
^  匹配字符串开始
\s 匹配空格
+  匹配一次或者多次
$  匹配字符串末尾
*/ 
//扩展$
$.extend({
    min:function(a,b){
        return a >b ? b:a;
    },
    max:function(a,b){
        return a>b?a:b;
    },
    leftTrim:function(str){
        // "     abc"
        return str.replace(/^\s+/,"")
    },
    rightTrim:function(str){
        //"abc          "
        return str.replace(/\s+$/,"")
    }
})

1.2 扩展jQuery对象的方法

    $.fn.extend(object)
//扩展 $("#id").xxxx
//  * checkAll()  全选
//  * unCheckAll() 全不选
//  * reverseCheck() 反选
$.fn.extend({
    checkAll:function(){
        //效果的实现  说明一下 this可以执行prop方法
        this.prop("checked",true)
    },
    uncheckAll:function(){
        this.prop("checked",false)
    },
    reverseCheck(){
        this.each(function(){
            //静静想想
            this.checked = !this.checked
        })
    }
})

1.3 调用扩展

<body>
     <input type="checkbox" name="items" value="足球">足球
     <input type="checkbox" name="items" value="乒乓球">乒乓球
     <input type="checkbox" name="items" value="篮球">篮球
     <input type="checkbox" name="items"  value="羽毛球" >羽毛球
     <br/>
     <input type="button" id="checkAllBtn" value="全选">
     <input type="button" id="checkNoBtn" value="全不选">
     <input type="button" id="reverseCheckedBtn" value="反选">
</body>
<script src="js/jquery-1.10.1.js"></script>
<script src="my_jQuery_plugin.js"></script>
<script>
//min(a,b) 返回较小的值
console.log($.min(0,1))  
//max()返回较大的值
console.log($.max(0,1))
//leftTrim() 去除字符串左边的空格
console.log("--------------"+$.leftTrim("   asfdssdfsfd")+"----------------")
//rightTrim() 去除右边的空格
console.log("----------"+$.rightTrim("adfsdfsdf      "+"--------------"))

//全选
$("#checkAllBtn").click(function(){
   $(":checkbox").checkAll()
})
//全不选
$("#checkNoBtn").click(function(){
   $(":checkbox").uncheckAll()
})
//反选
$("#reverseCheckedBtn").click(function(){
    $(":checkbox").reverseCheck()
})

</script>

2 自调用的函数

2.1 命名函数

<script>
    //01 命名函数
    function add(a, b) {
        return a + b
    }
    console.log(add(1, 2));
</script>

2.2 匿名函数赋值给一个变量

<script>
    //02 匿名函数赋值给一个变量
    var j = function (a, b) {
        return a - b
    }
    console.log(j(3, 2));  //1
</script>

2.3 自调用函数

<script>
    //03 自调用函数
    (function (a, b) {
        console.log(a * b)
    })(3, 2)
</script>

3 多库共存

问题: 如果有2个库都有$ 就存在冲突
  解决: jQuery库可以释放$的使用权 让另一个库可以正常使用 此时jQuery就只能使用jQuery了。
  API: jQuery.noConflict()。

<script src="js/jquery-1.10.1.js"></script>
<script src="myLib.js"></script>
<script>
    jQuery.noConflict();  //释放$的使用权
    jQuery(function(){
        console.log("我jQuery又可以使用了")
    })

    $();
    console.log($)
    console.log(typeof $)  //function
</script>

4 onload和ready

4.1 onload和ready的区别

 区别: window.onload于 $(document).ready() [$(function(){})]
   * window.onLoad
   * 包括页面的图片加载完毕后才会回调(晚)
   * 只有一个监听回调

   * $(document).ready()
   * 等同于 $(function(){})
   * 页面加载完毕就回调(不等图片加载了)
   * 可以有多个监听回调

4.2 源码展示

<script src="js/jquery-1.10.1.js"></script>
<script>
    window.onload=function(){
        console.log("我是第一个onload")
    }
    //第二个onload会把第一个onload覆盖掉
    window.onload=function(){
        console.log("我是第二个onload")
    }

    $(function(){
        console.log("我是第一个$(document).ready()")
    })
    $(function(){
        console.log("我是第二个$(document).ready()")
    })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值