JQuery 中的事件命名空间

今天在看jQuery基础教程时看到了jQuery中的事件命名空间,在js中我没有看到过类似的定义,于是去搜索了一下相关的内容,以下为自己的理解,不当之处还望指出。

所谓事件命名空间,简单来说就是事件类型后面用点语法附加一个别名,以便引用事件,比如:’on(‘click.demo’,function(){})’,其中demo就相当于一个事件命名空间,我们可以给相同的事件添加不同的事件命名空间,比如

$('.hello').on('click.hello1',function(){alert('hello1')});
$('.hello').on('click.hello2',function(){alert('hello2')});

以上代码意思是为类名是’.hello’的jQuery对象添加两个名字分别为hello1,hello2的点击事件,两个事件按照定义的顺序依次执行。

很多时候,我们需要移出一个对象上的部分事件,这时事件命名空间就体现了他的强大之处,例子:

$('.welcome').click(function(){
    $('.hello').off('click.hello1');
});

当点击了类名为welcome的元素后,调用移除事件函数off(),此时若再点击类名为‘hello’的元素,就只会弹出hello2的对话框,hello1 的对话框将不会弹出,因为名为hello1的点击事件已经被移出。

也可以用在批量删除绑定了相同事件名的事件,比如

$('.hello').on('clcik.demo',show);
$('.hello').on('mouseover.demo',show1);
$('.hello').on('click.demo1'.show2);
$('.hello').on('click',function(){alert('hello111111')});
$('.welcome').click(function(){
    $('.hello').off('.demo');
});

以上代码表示删除类名为.hello的元素上所有名为demo的事件,其他事件不受影响。

再比如

$('.hello').on('clcik.demo',show);
$('.hello').on('mouseover.demo',show1);
$('.hello').on('click.demo1'.show2);
$('.hello').on('clcik.demo',show3);
$('.hello').on('click',function(){alert('hello111111')});
$('.welcome').click(function(){
    $('.hello').off('click.demo');
});

此时会删除所有绑定在类名为.hello的元素上名字为demo的点击事件(必须同时满足),其他名字或者其他类型的事件均不受影响。

另外,事件命名空间只能用在on()函数,off()函数或bind(),unbind()中,不能用在事件简单绑定函数中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值