jQuery04


小概

本章学习三个jQuery的这三个部分:链式编程,多库共存,插件。


1.链式编程

链式编程

  1. 什么时候我们可以使用链式编程
    我们调用一个方法,这个方法返回一个合适的jQuery对象,那就可以继续点出jQuery方法来继续进行操作。
  2. 有些时候调用jQuery方法返回jquery对象,但是这个jQuery对象不是我们想要的jQuery对象,则适合进行链式编程。
  3. 需要注意返回值,如果不是jQuery对象 比如数字,这是不能使用jQuery方法的
            console.log($('#one').width(100).width()); //100
            $('#one').width(100).width().height(100).css('backgroundColor','red'); //会报错
            $('#one').width(100).width().end().height(100).css('backgroundColor','red');//会报错 数字100是不能点出end()方法的

end()方法:返回上一层选择器那里
之前提过prev()表示选择上一个兄弟,prevAll()则是选择之前的所有兄弟
next():选择下一个兄弟,nextAll()选择之后所有的兄弟

2. 多库共存

如何查看引入的jQuery的版本

  1. log(jQuery.prototype.jquery)//查看原型里的jquery
  2. log(jQuery.fn.jquery)
  3. log($.prototype.jquery)
  4. log($.fn.jquery)

如果一个文件引入多个jquery版本,$是属于后引人的jquery的(后引入的jquery会把之前的jquery在window定义的 $进行覆盖);这个时候如果要使用之前的 $ 就需要用到jquery提供的多库共存机制

  <script src="./jquery-3.0.0.js"></script>
  <script src="./jquery-1.12.4.js"></script>
  let _$ = $.noConflict();
  console.log($.fn.jquery);//3.0.0
  console.log(_$.fn.jquery);//1.12.4

原理:$没有调用.noConflict()之前,查看版本是后引入的版本1.12.4,let _ $ = $.noConflict()就是把当前 $的控制权给释放掉,把1.12.4的 $赋值给 _ $, $自然就变成3.0.0版本的了。你要用1.12.4里面的jquery方法就可以用 _ $这个语法糖。

3. 插件

jquery虽然封装了很多方法,但是也有一些不能实现的功能,比如:animate(),可以动画改变left top width height 但是却不能修改backgroundColor。
这个时候如果你需要的话就可以引入颜色插件实现效果。

      //去下面2个网站中查找你想要的jQuery插件: 
      http://www.htmleaf.com/ 
      https://www.jq22.com/

      //jQuery插件的使用: 
      //1.按照人家插件的使用说明来:
      //2.看人家的示例. 
      //人家引入什么你也引入什么,人家是什么结构你也写什么结构,人家调用什么方法你也调用什么方法

3.1 常用的几个插件

1.修改颜色插件(颜色动画-某东工具栏)
需求: //需求1:给每一个li设置鼠标移入事件:
// 上面是文字的span更改定位的left值为-76(宽)以及颜色,
// 下面的图标span更改颜色.
//需求2:给每一个li设置鼠标移出事件:还原

    <script src="jquery-1.12.4.js"></script>
    <!-- 引入颜色插件 -->
    <script src="./plugin/jquery.color.js"></script>
    <script>
        $(function () {
            //delay(延迟的时间); //延迟 
            $('.toolbar>li').on('mouseenter',function(){
                //上面是文字的span更改定位的left值为-76(宽)以及颜色,
                $(this).children('.text').stop(true,false).delay(200).animate({
                    left:-76,
                    backgroundColor:'#db192a'
                },500);
                //下面的图标span更改颜色.
                $(this).children('.icon').stop(true,false).delay(200).animate({
                    backgroundColor:'#db192a'
                },500);

            }).on('mouseleave',function(){
                //还原
                $(this).children('.text').stop(true,false).animate({
                    left:0,
                    backgroundColor:'#7a6e6e'
                },200);

                $(this).children('.icon').stop(true,false).animate({
                    backgroundColor:'#7a6e6e'
                },200);
            })
        });
    </script>

2.图片懒加载插件

  1. 不管img标签隐藏还是显示 有src属性都会去加载这张图片
  2. 那么如果页面上有太多的图片 而且有些图片不在可视窗口内 如果加载了会影响页面的渲染页面时间
  3. 解决方案:自己控制图片的加载 当进入可视区域内容才去加载
  4. 怎么控制呢? 通过控制src属性来控制图片加载
  5. 思路怎么样? 首先默认所有的图片都不使用src属性,自定义一个属性存要显示的图片路径,当进入可视区域追加到src属性
  6. 使用插件 基于jquery的图片加载插件
  7. jquery.lazyload.js 延时加载图片
   <script src="jquery-1.12.4.js"></script>
    <!-- 引入图片懒加载的插件 -->
    <script src="./plugin/jquery.lazyload.js"></script>
    <script>
        $(function () {

            $('ul img').lazyload({
                placeholder : "./111.png", //用小图片提前占位
                effect: "fadeIn", // 载入使用何种效果
            });

        })
    </script>

3.UI插件
不做过多掩饰,可以去网站上找类似的插件,跟着示例写

3.2 插件封装

给jQuery添加插件的两种方法

  1. 给$直接添加方法.(静态方法)
  2. 给jQuery的原型添加方法. (实例方法)
    <!-- 引入我们自己写的add插件 -->
    <script src="./jQuery-add.js"></script>
    <!-- 引入我们自己写的bgColor插件 -->
    <script src="./jQuery-bgColor.js"></script>
    
        //1.给$直接添加方法.  
        let res = $.fn.add(10,20);
        console.log(res);

        //2.给jQuery的原型添加方法. 
        $('div').bgColor('red').width(100).height(100);
        $('p').width(100).bgColor('green').height(100);
  • 静态方法
//自执行函数
;(function ($) {
  //给$添加一个add方法.
  $.prototype.add = function (num1, num2) {
    return num1 + num2;
  };
})($);
  • 加在原型上
;(function($){
    //给$的原型添加方法. 
    $.fn.bgColor = function(yanse){ //fn==prototype
        //console.log(this);//此时这里的this是调用该方法的jQuery对象. 
        this.css('backgroundColor',yanse);
        return this;
    }
}(jQuery));

弹幕案例
项目中可以引入外部cdn文件实现页面优化,(如果请求自己服务器的.js .css等文件,次数多性能不佳,网络资源就很棒)。

总结

jquery中的方法很多,正确的打开方式可以使我们写的少做的多,需要多用和多去复习之前的方法,温故而知新 这句话真taniang的有道理!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值