jQuery 学习笔记(三)

1.jQuery 事件注册

jQuery 为我们提供了方便的事件注册机制,使开发人员易于操作,优缺点如下:

  • 优点:操作简单,且不用担心事件覆盖等问题。
  • 缺点:普通的事件注册不能做事件委托,且无法实现事件绑定,需要借助其它方法。


    在这里插入图片描述

演示代码:


    

2.jQuery 事件处理

因为普通注册事件方法的不足,jQuery 又开发了多个处理方法,重点讲解如下:

  • on():用于事件绑定,也是目前最好用的事件绑定方法
  • off():事件解绑
  • trigger() / triggerHandler():事件触发。

2.1 事件处理 on() 绑定事件

因为普通注册事件方法不足,jQuery 又创建了多个新的事件绑定方法 bind() / live() / delegate() / on() 等,其中最好用的是 on()。


在这里插入图片描述

演示代码:





在这里插入图片描述

演示代码:

// (2) on 可以实现事件委托
//$("ul li").click(function() {})
$("ul").on("click", "li", function() {
    alert("Hello World!");
})
在这里插入图片描述

演示代码:

// (3) on 可以给动态创建的元素绑定事件
// $("ol li").click(function() {
//     alert(11);
// })
$("ol").on("click", "li", function() {
    alert("hello");
})
var li = $("
  • 我是后来创建的
  • ") $("ol").append(li);

    2.2 事件处理 off() 解绑事件

    当某个事件上面的逻辑,在特定需求下不需要的时候,可以把该事件上的逻辑移除,这个过程也称为事件解绑。jQuery 为我们提供了多种事件解绑方法:die() / undelegate() / off() 等,甚至还有只触发一次的事件绑定方法 one(),在这里重点看一下 off()。


    在这里插入图片描述

    演示代码:

    • 我们都是好孩子
    • 我们都是好孩子
    • 我们都是好孩子

    我是p

    2.3 事件处理 trigger() 自动触事件

    有些时候,在某些特定条件下,我们希望某些事件可以自动触发,比如轮播图自动播放功能跟点击左右侧按钮一致。可以利用定时器自动触发左右按钮点击事件,不必鼠标点击触发。由此 jQuery 为我们提供了两个自动触发事件 trigger() 和 triggerHandler()。


    在这里插入图片描述

    演示代码:

    3.jQuery 事件对象

    jQuery 对 DOM 中的事件对象 event 进行了封装,兼容性更好、获取更方便、使用变化不大。事件被触发,就会有事件对象的产生。

    在这里插入图片描述

    演示代码:

    4.jQuery 拷贝对象

    在这里插入图片描述

    演示代码:

    $(function() {
        // var targetObj = {};
        // var obj = {
        //     id: 1,
        //     name: "lyman"
        // };
        // // $.extend(targetObj, obj);
        // $.extend(targetObj, obj);
        // console.log(targetObj);
    
        // var targetObj = {
        //     id: 0
        // };
        // var obj = {
        //     id: 1,
        //     name: "lyman"
        // };
        // // $.extend(targetObj, obj);
        // $.extend(targetObj, obj);
        // console.log(targetObj); // 会覆盖 targetObj 里原来的数据
    
        
        var targetObj = {
            id: 0,
            msg: {
                sex: "男"
            }
        };
        var obj = {
            id: 1,
            name: "lyman",
            msg: {
                age: 18
            }
        };
        // $.extend(targetObj, obj);
        // $.extend(targetObj, obj);
        // console.log(targetObj); // 会覆盖 targetObj 里原来的数据
        // // 1.浅拷贝把元对象里面复杂数据类型的地址拷贝给目标对象
        // targetObj.msg.age = 20;
        // console.log(obj);
        // console.log(targetObj);
    
        // 2.深拷贝把里面的数据完全复制一份给目标对象,如果里面有不冲突的属性,会合并到一起
        $.extend(true, targetObj, obj);
        console.log(targetObj); // 会覆盖 targetObj 里原来的数据
        // 1.浅拷贝把元对象里面复杂数据类型的地址拷贝给目标对象
        targetObj.msg.age = 20;
        console.log(obj);
        console.log(targetObj);
    })
    

    5.jQuery 多库共存

    实际开发中,很多项目连续开发十多年,jQuery 版本不断变更,最初的 jQuery 版本无法满足需求,这时就需要保证在旧有版本正常运行的情况下,新的功能使用新的 jQuery 版本实现,这种情况被称为,jQuery 多库共存。


    在这里插入图片描述

    演示代码:

    function $(ele) {
        return document.querySelector(ele);
    }
    console.log($("div"));
    // 解决方式 1:适用于 $ 符号冲突
    jQuery.each();
    // 解决方式 2:自定义,释放 $ 的控制权
    var suibian = jQuery.noConflict();
    console.log(suibian("span"));
    

    6.jQuery 插件

    jQuery 功能比较有限,想要更复杂的特效效果,可以借助 jQuery 插件完成。这些插件也是依赖于 jQuery 来完成的,所以必须引入 jQuery 文件,所以也被称为 jQuery 插件。

    jQuery 插件常用的网站:

    • jQuery 插件库:http://www.jq22.com
    • jQuery 之家:http://www.htmleaf.com

    jQuery 插件使用步骤:

    • 引入相关文件。(jQuery 文件和插件文件)
    • 复制相关 html、css、js(调用插件)

    6.1 瀑布流插件

    瀑布流插件是由 jQuery 之家开源的插件。

    下载位置:


    在这里插入图片描述

    代码演示:
    插件的使用三点:

    • 引入 css
      
      
        
      
      
      
    • 引入 js
      
      
      
      
      
      
    • 引入 html
      
      
      

    总结:jQuery 插件就是引入别人写好的 html、css、js(同时也可以只引入一部分)。

    6.2 图片懒加载插件

    图片的懒加载就是:当页面滑动到有图片的位置,图片才进行加载,用以提升页面打开速度和用户体验。

    下载略

    代码演示:
    懒加载只需引入 html 和 js 操作即可,此插件不涉及 css

    • 引入 js
      
      
      
    • 引入 html
      
      

    6.3 全屏滚动插件

    全屏滚动插件比较大,所以,一般大型插件都会有帮助文档,或者网站,全屏滚动插件介绍比较详细的网站为:
    http://www.dowebok.com/demo/2014/77/

    代码演示:
    全屏滚动因为有多重形式,所以不一样的风格 html 和 css 也不一样,但是 js 变化不大。所以下面只演示 js 的引入,html 和 css 引入根据自己实际项目需要使用哪种风格引入对应的 html 和 css。

    
    
    
    

    注意:实际开发,一般复制文件,然后在文件中进行修改和添加功能。

    你可能感兴趣的:(jQuery 学习笔记(三))