jQuery系列05

一、浏览器事件、文档加载事件

1.浏览器事件

  (1)error()不推荐使用已过时,当出现错误的时候,触发该事件。

  (2)resize()当页面大小发生改变时,触发该事件。通常绑定在window上。

  (3)scroll()当元素发生滚动时,触发该事件。可以绑定在任何的元素上。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../jquery-3.2.1.min.js"></script>
    <style type="text/css">
        div {
            width: 100px;
            height: 100px;
            border:1px solid #ccc;
            overflow: auto;
        }
    </style>
</head>
<body>
    <p>hello</p>
    <div>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>
</body>
<script>
    $(function(){
        $("div").scroll(function(){
            console.log("scrolling");
        })
    })
</script>

</html>

将scroll事件绑定在div上,当div产生滚动时,在控制台会打印出相应的消息。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../jquery-3.2.1.min.js"></script>
</head>
<body>

</body>
<script>
    $(window).resize(function(){
        console.log("大小改变");
    })
</script>
</html>

将事件resize绑定在window对象上,当窗口的大小发生改变时,会触发resize事件,并在控制台窗口打印相应的内容。

2.文档加载事件

  (1)ready()ready事件在DOM结构绘制完成之后就会执行,这样能确保在大量的媒体文件(视频,音频)没有加载出来之前,js代码一样可以执行

  (2)load()load事件必须等待整个网页的所有内容全部加载完毕之后才会执行, 当一个网页中存在大量的媒体文件时,就会出现一种情况,网页文档已经呈现出来,但是由于网页中的内容内有全部加载完毕,导致load不能够及时被触发。

  (3)网页加载的过程

    1.解析HTML结构

    2.加载外部脚本和样式表文件

    3.解析并执行脚本代码

    4.构造DOM模型(ready)

    5.加载图片等外部文件

    6.页面加载完毕(load)

  ready事件有三种书写方式

$().ready(function(){})//不推荐使用,默认事件挂在document对象上

$(document).ready(function(){})//可读性比较强

$(function(){})//简写方式,开发中经常使用这种写法

 二、绑定事件处理器

  1.bind(event,function(),bool)

    event:要绑定的事件

    function():事件处理函数

    bool:是否支持事件冒泡

  2.delegate(element,event,function())

    element:选择要绑定的元素

    event:绑定的事件

    function():事件处理函数

  以上两种方法可以使用,但是已经被on所代替,在开发中尽量使用on()

  3.on(event,function())

    event:绑定的事件

    function:事件处理函数

  on(event,element,function())

    event:绑定的事件

    element:绑定事件的元素

    function():事件处理函数

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../jquery-3.2.1.min.js"></script>
</head>
<body>
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
    <li>li4</li>
</ul>
</body>
<script>
    $(function () {
        $("ul").on("click","li", function () {
           console.log($(this).html());
        })
    })
</script>
</html>

当点击li时,控制台会打印li里面的内容。

  4.off(event,function())移除指定的事件。

   off(event,element,function())

   event:移除的事件名称

   element:要移除事件的元素

   function()移除事件处理函数

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../jquery-3.2.1.min.js"></script>
    <style>
        ul li {
            float: left;
            list-style:none;
            margin-left: 10px;
        }

        span {
            display:block;
            width: 100px;
            height: 50px;
            background: #cccccc;
            text-align: center;
            line-height: 50px;
            color: #ffffff;
        }

        .on {
            background: black;
            cursor:pointer;
        }
    </style>
</head>
<body>
    <div>
        <p>this is p</p>
    </div>
</body>
<script>
    var fn=function(){
        console.log("hello");
    }
     $(function () {
         $("div").on("click mouseover","p",fn);
        $("div").off("mouseover","p",fn);
    })
</script>
</html>

首先给div添下面的p通过on()添加两个事件,click和mouseover,然后通过off()移除mouseover事件。

  5.one(event,data,function())

  event:要绑定的事件

  function():事件处理函数

  data:可选,规定传递到函数的额外数据。

  one()方法也是在指定的元素上添加一个或多个事件,但是不同的是,通过one()添加的事件只能触发一次。

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="../jquery-3.2.1.min.js" type="text/javascript"></script>
</head>
<body>
    <p>this is p</p>
</body>
<script>
    $(function(){
        $("p").one("click", function () {
            console.log($(this).html());
        })
    })
</script>
</html>

第一次点击时,在控制台会打印p中的内容,但是再次点击时不会触发该事件。

  6.unbind()移除bind()绑定的事件

  7.undelegate()移除delegate()绑定的事件

三、事件对象

  1.event.target------------------>触发事件的元素。

  2.event.currentTarget-------->事件绑定的元素。

  3.event.delegateTarget------>受委托绑定的事件,如果未使用事件委托,则返回值为currentTarget,即事件绑定的元素。

  4.event.pageX------------------>相对于文档左边缘的坐标

  5.event.pageY------------------>相对于文档上边缘的坐标

  6.event.type--------------------->显示触发了那种类型的事件

  7.event.preventDefault-------->阻止默认的行为发生(例如点击a标签时会跳转页面)

  8.enevt.stopPropagation----->阻止冒泡事件继续向上执行

 

posted on 2017-07-31 00:16  观琪不喻  阅读(131)  评论(0编辑  收藏  举报

导航