2

我很好奇以下...

jQuery 允许我们定义自定义事件(例如myevent)并触发这些事件。myevent.namesp还可以通过添加命名空间(例如)来添加额外的粒度层。

我想知道是否可以为所有具有相同名称的自定义事件编写事件处理程序,但不管它们的命名空间如何

例如,如果我有以下代码:

$('input').on('myevent.namesp', function(e) {
    alert('The immediate event fired');
});

$('body').on('myevent', function() {
    alert('Caught the delegated event');
});

$('input').click(function() {
    $(this).trigger('myevent.namesp');
});

“立即事件”被触发,但委托的事件处理程序没有被触发(因为它没有使用特定的命名空间绑定)。是否可以做类似的事情

$('body').on('myevent.*', function() { /* Handler for all 'myevent' events */ });

我知道.on()以这种方式使用是不可能的,但你明白了。

您可以在此处查看示例:http: //jsfiddle.net/VwU68/

4

1 回答 1

1

命名空间事件使它们更具体;如果事件触发器没有命名空间,那么无论命名空间如何,都会触发该类型的所有事件。因此,您必须改为.trigger使用'myevent'

但是,您可以拥有多个命名空间并触发最高级别的命名空间(显然;我什至不知道这一点):http: //jsfiddle.net/VwU68/2/ - 您可以利用它来发挥自己的优势.

于 2012-12-10T17:47:08.233 回答