04-4 jquery事件

1、事件绑定

image.png

事件绑定,可以向像下图第一段那样直接写,不过现在更推荐下面的写法,第一个参数是要绑定的事件,第二个参数是事件处理函数

image.png

<body>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
    </ul>
    <button id="btn" value="click"></button>
    <script>
        $("#btn").on("click",function(){
            $('<li>'+Math.random()+'</li>').appendTo("ul");
        });
        $("li").on("click",function(){
            console.log($(this).html());
        });

    </script>
</body>
这样写的话,只有ul原有的li可以在控制台输出文本内容,但是后加入的li不行,可以改成给ul绑定,也就是事件委托
<body>
    <ul>
        <li>111</li>
        <li>222</li>
        <li>333</li>
    </ul>
    <button id="btn" value="click"></button>
    <script>
        $("#btn").on("click",function(){
            $('<li>'+Math.random()+'</li>').appendTo("ul");
        });
        // $("li").on("click",function(){
        //     console.log($(this).html());
        // });
        $("ul").on("click",function(e){
            if(e.target.tagName =="LI"){
                // console.log(e.target.innerHTML);
                console.log($(e.target).html());
            }
        })
    </script>
</body>
换成给父元素ul绑定事件,然后判断事件源是否是li,注意LI大写,因为e.target是原生DOM对象,不是jQuery对象,注意区分用innerHTML 还是 html()

image.png

在jQuery中兼容性很好,不用写e = e || window.event 和var target = e.target ||e.srcElement;可以上来直接判断事件源

image.png

上述是我们根据事件委托原理做的,但其实jQuery的on方法已经能实现上述的委托操作了,语法如下,第一个参数是要绑定的事件,第二个参数是实际要触发的元素
  $("ul").on("click","li",function(){ //li才是实际要触发的元素
            console.log($(this).html());//this代表当前点击的li
        });
如果你页面中有后生成的元素,那么就一定会用到事件委托
2.取消绑定的事件off

image.png

按理说,先绑定,后取消,不应该相当于没绑定吗,但是他还会执行,咋办呢,他俩的事件处理函数必须相同

image.png

同理,我们的那俩函数方法虽然一样,但是却不是一个东西,可以通过吧函数提出来,赋值给一个变量,这样他俩就是一个函数了

image.png

3.trigger 触发事件

image.png

这段代码的意思是 第一段给上面的输入框绑定获取焦点事件。第二段 通过给下面的按钮绑定事件,然后触发输入框的获取焦点事件
用triggerHander的话 ,没有蓝色的边框,也没有闪动的光标,说明他只触发上面写的,不会触发默认的事件

image.png

4.focus原生和jQuery的都不支持事件冒泡,focusin支持事件冒泡

image.png

5.hover

image.png

第一个参数是鼠标划入事件,第二个参数是鼠标滑出事件, hover可以看成是mouseover 和mouseout的结合体
6.mouseover 和mouseout 会触发事件冒泡

image.png

image.png
image.png

7、如果你不想要事件冒泡。可以用mousenter mouseleave

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值