jq: 事件-委托

由来:

        <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<button>增加</button>
<script src="../jquery-3.4.1.js"></script>
<script>
     $('li').on('click', function() {
         console.log($(this).text())
     })
     $('button').on('click', function() {
         $('ul').append(`<li>${$('li').length + 1}</li>`)
     })
</script>
      

v2-3e1eb87fc6f81f8bc16d2421d6b00ca8_b.jpg

获取不到动态增加li的事件函数

事件委托

        $('ul').on('click', 'li', function() {
     console.log($(this).text())
    })
$('button').on('click', function() {
     $('ul').append(`<li>${$('li').length + 1}</li>`)
})

      

v2-02319c7cf1a76416c301f13981bcbb1b_b.jpg

使用on方法中使用事件的时候可以在里面存函数

        $('ul').on('click', 'li', {name: 'fanghuayong'}, function() {
    console.log(e.data)
})

      

v2-9bf81eedb9b42a135ba714c1b5dd3dc6_b.jpg

解除事件绑定: 就这么简单

        $('button').off('click')

      

v2-6f6ef19a5cc14cb2202b47abfa991521_b.gif

如果有多个绑定事件函数,只取消其中一个,把事件函数引用值传入即可,如:

        function show() {
    console.log(123)
}
$('button').on('click', show)
$('button').off('click', show)

      


只执行一次的事件函数 one方法

可以用于登录之类的地方,如果不是必须登录,可以做点击登录的时候再加载html结构,达到减少结构,使加载时间更快。

        $('button').one('click', function() {
    $('ul').append(`<li>${$('li').length + 1}</li>`)
})

      

v2-e38e6fdd096049c942f368a2652162ae_b.gif


自动触发的事件 trigger

可以在这里传值给事件函数

        $('button').trigger('click')

      

刷新就自动执行点击事件

可以触发系统事件(click等),也可以触发自定义事件:

        $('li').on('color', function(e, a, b) {
 $(this).css('color', 'red')
    })
 $('button').click(function() {
 $('li').trigger('color')
    })

      

v2-0592b3c461dbb6512513549fd9a457c7_b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值