您的位置:首页 > Web前端 > JQuery

JQuery 中的事件命名空间

2015-12-28 16:56 459 查看
今天在看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()中,不能用在事件简单绑定函数中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: