zoukankan      html  css  js  c++  java
  • web前端----jQuery事件

    事件

    常用事件

    click(function(){...})
    hover(function(){...})
    blur(function(){...})
    focus(function(){...})
    change(function(){...})
    keyup(function(){...})

    keydown和keyup事件组合示例:

    <!DOCTYPE html>
    <html lang="zh-CN">
    <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>键盘事件示例</title>
    </head>
    <body>
    
    <table border="1">
      <thead>
      <tr>
        <th>#</th>
        <th>姓名</th>
        <th>操作</th>
      </tr>
      </thead>
      <tbody>
      <tr>
        <td><input type="checkbox"></td>
        <td>Egon</td>
        <td>
          <select>
            <option value="1">上线</option>
            <option value="2">下线</option>
            <option value="3">停职</option>
          </select>
        </td>
      </tr>
      <tr>
        <td><input type="checkbox"></td>
        <td>Alex</td>
        <td>
          <select>
            <option value="1">上线</option>
            <option value="2">下线</option>
            <option value="3">停职</option>
          </select>
        </td>
      </tr>
      <tr>
        <td><input type="checkbox"></td>
        <td>Yuan</td>
        <td>
          <select>
            <option value="1">上线</option>
            <option value="2">下线</option>
            <option value="3">停职</option>
          </select>
        </td>
      </tr>
      <tr>
        <td><input type="checkbox"></td>
        <td>EvaJ</td>
        <td>
          <select>
            <option value="1">上线</option>
            <option value="2">下线</option>
            <option value="3">停职</option>
          </select>
        </td>
      </tr>
      <tr>
        <td><input type="checkbox"></td>
        <td>Gold</td>
        <td>
          <select>
            <option value="1">上线</option>
            <option value="2">下线</option>
            <option value="3">停职</option>
          </select>
        </td>
      </tr>
      </tbody>
    </table>
    
    <input type="button" id="b1" value="全选">
    <input type="button" id="b2" value="取消">
    <input type="button" id="b3" value="反选">
    
    <script src="jquery-3.2.1.min.js"></script>
    <script>
      // 全选
      $("#b1").on("click", function () {
        $(":checkbox").prop("checked", true);
      });
      // 取消
      $("#b2").on("click", function () {
        $(":checkbox").prop("checked", false);
      });
      // 反选
      $("#b3").on("click", function () {
        $(":checkbox").each(function () {
          var flag = $(this).prop("checked");
          $(this).prop("checked", !flag);
        })
      });
      // 按住shift键,批量操作
      // 定义全局变量
      var flag = false;
      // 全局事件,监听键盘shift按键是否被按下
      $(window).on("keydown", function (e) {
    //    alert(e.keyCode);
        if (e.keyCode === 16){
          flag = true;
        }
      });
      // 全局事件,shift按键抬起时将全局变量置为false
      $(window).on("keyup", function (e) {
        if (e.keyCode === 16){
          flag = false;
        }
      });
      // select绑定change事件
      $("table select").on("change", function () {
        // 是否为批量操作模式
        if (flag) {
          var selectValue = $(this).val();
          // 找到所有被选中的那一行的select,选中指定值
          $("input:checked").parent().parent().find("select").val(selectValue);
        }
      })
    </script>
    </body>
    </html>
    按住shift键批量操作

    实时监听input输入值变化示例:

    <!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="jquery-3.2.1.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 () {
        alert($(this).val());
      })
    </script>
    </body>
    </html>
    input值变化事件

    事件绑定

    1. .on( events [, selector ],function(){})
    • events: 事件
    • selector: 选择器(可选的)
    • function: 事件处理函数

    移除事件

    1. .off( events [, selector ][,function(){}])

    off() 方法移除用 .on()绑定的事件处理程序。

    • events: 事件
    • selector: 选择器(可选的)
    • function: 事件处理函数

    阻止后续事件执行

    1. return false// 常见阻止表单提交等

    注意:

    像click、keydown等DOM中定义的事件,我们都可以使用`.on()`方法来绑定事件,但是`hover`这种jQuery中定义的事件就不能用`.on()`方法来绑定了。

    想使用事件委托的方式绑定hover事件处理函数,可以参照如下代码分两步绑定事件:

    $('ul').on('mouseenter', 'li', function() {//绑定鼠标进入事件
        $(this).addClass('hover');
    });
    $('ul').on('mouseleave', 'li', function() {//绑定鼠标划出事件
        $(this).removeClass('hover');
    });

    页面载入

    当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。这是事件模块中最重要的一个函数,因为它可以极大地提高web应用程序的响应速度。

    两种写法:

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

    简写:

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

    文档加载完绑定事件,并且阻止默认事件发生:

    <!DOCTYPE html>
    <html lang="zh-CN">
    <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>登录注册示例</title>
      <style>
        .error {
          color: red;
        }
      </style>
    </head>
    <body>
    
    <form id="myForm">
      <label for="name">姓名</label>
      <input type="text" id="name">
      <span class="error"></span>
      <label for="passwd">密码</label>
      <input type="password" id="passwd">
      <span class="error"></span>
      <input type="submit" id="modal-submit" value="登录">
    </form>
    
    <script src="jquery-3.2.1.min.js"></script>
    <script src="s7validate.js"></script>
    <script>
      function myValidation() {
        // 多次用到的jQuery对象存储到一个变量,避免重复查询文档树
        var $myForm = $("#myForm");
        $myForm.find(":submit").on("click", function () {
          // 定义一个标志位,记录表单填写是否正常
          var flag = true;
          $myForm.find(":text, :password").each(function () {
            var val = $(this).val();
            if (val.length <= 0 ){
              var labelName = $(this).prev("label").text();
              $(this).next("span").text(labelName + "不能为空");
              flag = false;
            }
          });
          // 表单填写有误就会返回false,阻止submit按钮默认的提交表单事件
          return flag;
        });
        // input输入框获取焦点后移除之前的错误提示信息
        $myForm.find("input[type!='submit']").on("focus", function () {
          $(this).next(".error").text("");
        })
      }
      // 文档树就绪后执行
      $(document).ready(function () {
        myValidation();
      });
    </script>
    </body>
    </html>
    登录校验示例

    事件委托

    事件委托是通过事件冒泡的原理,利用父标签去捕获子标签的事件。

    示例:

    表格中每一行的编辑和删除按钮都能触发相应的事件。

    $("table").on("click", ".delete", function () {
      // 删除按钮绑定的事件
    })

    事件练习

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>常用事件</title>
    </head>
    <body>
    <input type="text" name="search" value="苹果手机" data-show ="">
    <button>搜索</button>
    <select name="" id="s1">
        <option value="gansu">甘肃</option>
        <option value="wuwei">武威</option>
        <option value="dingxi">定西</option>
        <option value="longxi">陇西</option>
        <option value="dalian">大连</option>
    </select>
    <script src="jquery-3.2.1.min.js"></script>
    <script>
    //    focus和blur事件
    $(document).ready(function () {
        //文档加载完之后执行下面的代码
         $(":input").focus(function () {
            var data = $(this).val();
            $(this).val("");
            $(this).attr("data-show", data);
    
        });
        $(":input").blur(function () {
            $(this).val($(this).attr("data-show"));
        });
        $("#s1").change(function () {
    //        当你的下拉框改变的时候就触发这个事件,就会执行下面的代码
            console.log($(this).val())
        })
    });
    
    </script>
    </body>
    </html>
    focus和blur练习
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>onmouse事件</title>
        <style>
            .box{
                 300%;
                height: 200px;
            }
            .title{
                background: steelblue;
                line-height: 40px;
            }
            .con{
                background: slategray;
                line-height: 30px;
            }
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <div class="box">
        <div class="title">onmouse</div>
        <div class="con hide">
            <div><a href="" class="item">你好吗?</a></div>
            <div><a href="" class="item">我好啊</a></div>
            <div><a href="" class="item">好就好呗</a></div>
        </div>
    </div>
    <script>
        var ele_title = document.getElementsByClassName('title')[0];
        var ele_box = document.getElementsByClassName('box')[0];
        //鼠标指上去的事件
        ele_title.onmouseover = function () {
            this.nextElementSibling.classList.remove('hide');
        };
        //鼠标移走的事件的两种方式
    //    方式一(推荐)
         ele_box.onmouseleave= function () {
            ele_title.nextElementSibling.classList.add('hide');
        };
    //    方式二
    //    ele_title.onmouseout = function () {
    //       this.nextElementSibling.classList.add('hide');
    //    }
    //    方式一和方式二的区别:
    //    不同点
    //      onmouseout:不论鼠标指针离开被选元素还是任何子元素,都会触发onmouseout事件
    //      onmouseleave:只有在鼠标指针离开被选元素时,才会触发onmouseleave事件
    //    相同点:都是鼠标移走触发事件
    </script>
    </body>
    </html>
    mouseleave和mouseout练习
  • 相关阅读:
    Linux学习总结(十一)—— Linux常用命令:版本信息查看(RedHat、CentOS、Debian、Ubuntu、Fedora、Oracle)...
    Linux学习总结(十一)—— Linux常用命令:版本信息查看(RedHat、CentOS、Debian、Ubuntu、Fedora、Oracle)...
    Linux 操作系统原理 — 进程与线程管理
    sed 变量替换
    触类旁通:那些关于 TBL$OR$IDX$PART$NUM 的诡异案例和知识
    python 追加库路径
    python 模块
    生成器
    深入解析:DB2 V10.5新特性列式存储表的优点与缺点
    赚钱项目轻度揭秘:旧手机回收背后的暴利内情
  • 原文地址:https://www.cnblogs.com/TheLand/p/8571513.html
Copyright © 2011-2022 走看看