事件命名空间不是层次结构。
使用您拥有的代码,$('#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');
});
在这里,您基本上为第一个创建了三个独立的命名空间,并为第二个和第三个创建了两个独立的命名空间。
仔细看this example,阅读我留给你的cmets。尝试许多不同的事情,看看你能做的不同事情有时很有用。
关于on() 不起作用:
这个sn-p直接取自jquery-1.7.1.js:
bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
}
如您所见,bind() 只是on() 的包装器,应该完全一样,除了bind() 不支持选择器或委托。