博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

jQuery事件

一,常用事件:

  点击事件:语法:click (function(){})

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--引入cdn-->
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<form action="">
    <p><label for="i1">username:
        <input type="text" id="i1" name="username">
        <span class="errors"></span>
    </label></p>
    <p><label for="i2">password:
        <input type="password" id="i2" name="password">
        <span class="errors"></span>
    </label></p>
    <input type="submit" value="注册" id="d1">
</form>
<script>
    // 获取按钮标签
    var $b1Ele = $('#d1');
    // 给按钮标签绑定点击事件
    // 原生js  b1ELe.onclick = function(){}
    $b1Ele.click(function () {
        // 获取到用户输入的内容
        var $userName = $('#i1');
        var $passWord = $('#i2');
        // 判断上面标签的value是否为空
        if ($userName.val().length == 0){
            // 找到username对于的span标签添加提示信息
            $('.errors').first().text('用户名不能为空')
        }
        // 判断上面标签的value是否为空
        if ($passWord.val().length == 0){
            // 找到username对于的span标签添加提示信息
            $('.errors').last().text('密码不能为空')
        }
        // 阻止表单的提交
        return false;
    })
</script>
</body>
</html>

  悬浮事件:语法:hover(function(){})

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>啊啊啊啊啊啊啊啊</p>

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js">
</script>
<script>
    $('p').hover(
        // 鼠标移在标签上面时依次触发两个function
        function () {
            alert('come on')
        },
        function () {
            alert('see you')
        }
    )
</script>
</body>
</html>

  input事件:语法: $('').on('事件',function(){})

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>实时监听input输入值变化</title>
</head>
<body>
<input type="text" id="i1">

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script>
  /*
  * oninput是HTML5的标准事件
  * 能够检测textarea,input:text,input:password和input:search这几个元素的内容变化,
  * 在内容修改后立即被触发,不像onchange事件需要失去焦点才触发
  * oninput事件在IE9以下版本不支持,需要使用IE特有的onpropertychange事件替代
  * 使用jQuery库的话直接使用on同时绑定这两个事件即可。
  * */
  $("#i1").on("input propertychange", function () {
      // this指的是原生的JS对象,因此要使用jQuery的方法需要用$转换
    alert($(this).val());
  })
</script>
</body>
</html>

  克隆事件:.clone()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <style>
        button {
            background-color: pink;
        }
    </style>
</head>
<body>
<button>屠龙宝刀,点击就送!</button>

<script>
    // 第一种绑定事件的方式
    // $('button').click(function () {
    //      $(this).clone(true).insertAfter(this);
    // })
    // 第二种绑定事件的方式
    $('button').on('click',function () {
        // this就是:button标签的原生JS对象
        // clone(无参数)表示不克隆事件,clone(true)表示克隆事件
        // insertAfter表示克隆的对象放在原对象之后
        $(this).clone(true).insertAfter(this);
    })

</script>
</body>
</html>

  阻止后续事件执行的两种方式:return false 和 e.preventDefault();

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<body>

<form action="">
    <input id="b1" type="submit">
</form>
<script>
    // 阻止submit按钮提交操作的两种方式
    $("#b1").click(function (e) {
        alert(123);
        //return false;
        e.preventDefault();
    });
</script>
</body>
</html>

  事件冒泡:

    本质:一个标签的事件被触发之后,系统会触发其父标签的相同事件。

    解决方法:e.stopPropagation()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<body>
<div>
    <p>
        <span>点我</span>
    </p>
</div>
<script>
    $("span").click(function (e) {
        alert("span");
        e.stopPropagation();
    });

    $("p").click(function () {
        alert("p");
    });
    $("div").click(function () {
        alert("div");
    })
</script>
</body>
</html>

  事件委托:基于事件冒泡的原理,利用父标签去捕获子标签的事件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<button>welcome!</button>

<script>
    // $('button').click(function () {
    //     alert(123)
    // })

    // 事件委托:body将click事件委托给button
    $('body').on('click','button',function () {
        alert(123)
    })
</script>
</body>
</html>

  ps:由于DOM加载需要时间,因此为了让每个标签都获得被绑定的事件,提供三种方式写入js代码:

  第一种:

$(document).ready(function(){
// 在这里写你的JS代码...
})

  第二种:

$(function(){
// 你在这里写你的代码
})

  第三种:在body标签的末尾写入script标签和js代码(主要的使用方式)

posted @ 2019-06-04 19:05  monsterc4t  阅读(159)  评论(0编辑  收藏  举报

消失在风中的少年 -mashiro