zoukankan      html  css  js  c++  java
  • 4_1:事件注册 + 事件处理 + 事件对象

    $('input').on('focus',function (event) {
        console.log(event);
    });

    基本和 webAPI 里面的 事件对象一致

    $('input').on('focus',function (event) {
        console.log(event);
    });

    基本和 webAPI 里面的 事件对象一致

     一  事件注册

    二 事件处理

    //2 事件处理 on() 绑定事件
        $("div").on({
            click:function () {
                $(this).css('background','red');
            },//绑定事件1
            mouseenter:function () {
                $(this).css('background','pink');
            },//绑定事件2
            onmouseleave:function () {
                $(this).css('background','green');
            }//绑定事件3
        });

    三 事件对象

     

    知识梳理

    //1 单个注册事件 element.click(function(){});
    
    //2 事件绑定 element.on({可以绑定多个事件});
    
    //3 解绑事件 element.off();
    
    //4 自动触发事件 element.trigger();

    一  绑定事件 on()

    优势

    //1 可以绑定多个事件
    //2 可以事件委托
    //3 可以给 未来动态创建的元素绑定事件

    1)语法

    element.on(events,[selector],fn);
    
    //1. events:一个或多个用空格分隔的事件类型,如"click"或"keydown" 。
    
    //2. selector: 元素的子元素选择器 。
    
    //3. fn:回调函数 即绑定在元素身上的侦听函数。

    2)绑定多个事件

    //1 绑定多个事件处理程序
    $("div").on({
        click:function () {
            $(this).css('background','red');
        },//绑定事件1
        mouseenter:function () {
            $(this).css('background','pink');
        },//绑定事件2
        onmouseleave:function () {
            $(this).css('background','green');
        }//绑定事件3
    });
    
    //2 多个事件处理程序相同
    $("div").on('mouseenter mouseleave', function () {
        $(this).toggleClass('current');
    }); //鼠标经过加上current 鼠标离开去掉current

    3)事件委托

    //事件委托
    $('ul').on('click',('li'),function () {
        alert('事件委托');
    });
    //ul 是事件绑定对象  li是事件触发对象


    4)可以给 未来动态创建的元素绑定事件

    //1 单独注册事件 不能给未来创建的元素 绑定事件
    $('ul li').click(function () {
      alert('10');
    });
    var li = $('<li>我是后创建的</li>');
    $('ul').append(li);//这个li 没有点击事件
    
    
    //2 on() 可以给 未来动态创建的元素 的绑定事件
    $('ul').on('click','li',function () {
        alert(10);
    });
    var li = $('<li>我是后创建的</li>');
    $('ul').append(li);

    小案例 微博发布

    <!DOCTYPE html>
    <html>
    
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            * {
                margin: 0;
                padding: 0
            }
    
            ul {
                list-style: none
            }
    
            .box {
                 600px;
                margin: 100px auto;
                border: 1px solid #000;
                padding: 20px;
            }
    
            textarea {
                 450px;
                height: 160px;
                outline: none;
                resize: none;
            }
    
            ul {
                 450px;
                padding-left: 80px;
            }
    
            ul li {
                line-height: 25px;
                border-bottom: 1px dashed #cccccc;
                display: none;
            }
    
            input {
                float: right;
            }
    
            ul li a {
                float: right;
            }
        </style>
        <script src="jquery.min.js"></script>
    </head>
    <body>
    <div class="box" id="weibo">
        <span>微博发布</span>
        <textarea name="" class="txt" cols="30" rows="10"></textarea>
        <button class="btn">发布</button>
        <ul>
        </ul>
    </div>
    <script>
        //1 点击发布按钮 动态创建小li 把文本框的值和删除按钮放入小li中 并把li插入到ul中
        $(".btn").on('click',function () {
            var li = $("<li></li>");
            li.html($('.txt').val() + "<a href='javascript:;'>删除</a>");//把文本框的值赋值给li
            $("ul").prepend(li);
            li.slideDown();//过渡效果 和 css中的 display: none; 配合使用  让元素滑动出来
            $(".txt").val("");//清空输入框
        });
        //2 点击删除 删除留言本身
        // $('ul a').click(function () {  //普通方法 不能给动态生成的元素 添加事件  [这个案例的练习重点]
        //     $(this).parent().remove();
        // });
        //on() 可以给动态生成的元素 绑定事件
        $('ul').on('click','a',function () {
            $(this).parent().slideUp(function () {
                $(this).remove();//这里的this 是 li 不是a
            });
        });
    </script>
    </body>
    </html>

    二 解绑事件 off()

    $('div').off();//1 移除所有事件
    $('div').off('click');//2 移除其中一个事件

    $('div').off('click mouseenter');//3 移除多个事件 中间用空格分隔
    $('ul').off('click','li');//4 解除事件委托 // 如果事件只想触发一次 用 one()来绑定
      就不存在绑定后再解绑这样的操作了

    三 自动触发事件 trigger()

    $('div').click(); //1 元素.事件
    
    $('div').trigger('click'); //2 元素.trigger('事件名称')
    
    $('div').triggerHandler('click'); //3 元素.triggerHandler() 不会触发元素的默认行为

    代码范例

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>自动触发</title>
        <script src="jquery.min.js"></script>
    </head>
    <body>
    <input type="text">
    <script>
        //给input添加 焦点事件
        $('input').on('focus',function () {
            $(this).val('你好');
        });
        //自动触发 但是阻止了默认行为 没有光标闪烁
        $('input').triggerHandler('focus');
    </script>
    </body>
    </html>
  • 相关阅读:
    如何把一个一般的git库变成“裸库”?
    MacOSX下杀掉sudo进程
    nginx FastCGI错误Primary script unknown解决办法
    Lua继承userdata
    Unity图文混排
    C++轻量级跨平台文件系统API
    lua_next()
    重载方法匹配算法
    C++模板函数只能全特化不能偏特化
    xcode离线安装包下载
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14502013.html
Copyright © 2011-2022 走看看