自定义命名空间事件将不起作用

jga*_*fin 3 jquery

我正在尝试使自定义命名空间事件按此处所述工作:http://docs.jquery.com/Namespaced_Events

但我必须遗漏一些东西,因为除非命名空间完全匹配,否则我无法触发事件.

我创建了一个小提琴来演示这个问题:http://jsfiddle.net/PsR6x/1/

我究竟做错了什么?

更新

第二绑定被调用jQuery中v1.3.2&v1.5.2但不是在v1.6.4以上.在任何版本中都不会调用第三个绑定.

on而不是bind也不起作用.

She*_*hea 5

事件名称空间不是层次结构.
使用您拥有的代码,$('#someid').trigger('griffin.model');触发所有代码,并$('#someid').trigger('griffin.updated');触发所有代码.

$('body').bind('griffin.model.updated.user', function() {
    alert('Exact namespace = trigger');
});
$('body').bind('griffin.model.updated', function() {
    alert('Will not trigger :(');
});
$('#someid').bind('griffin.model.updated', function() {
    alert('Same item, but not the same namespace = wont trigger');
});
Run Code Online (Sandbox Code Playgroud)

在这里,您基本上为第一个创建了三个独立的命名空间,为第二个和第三个创建了两个独立的命名空间.

仔细看看这个例子并阅读我留给你的评论.尝试许多不同的东西,看看你可以做的不同的事情,有时是有用的.

关于on()不工作:
这个片段直接来自jquery-1.7.1.js:

bind: function( types, data, fn ) {
    return this.on( types, null, data, fn );
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,bind()它只是一个包装器on(),并且应该完全相同,但bind()不支持选择器或委托.