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>
原文地址:https://www.cnblogs.com/fuyunlin/p/14502013.html