自定义命名空间事件将不起作用
我正在尝试让自定义命名空间事件按照此处所述工作: http : //docs.jquery.com/Namespaced_Events
但我必须遗漏一些东西,因为除非命名空间完全匹配,否则我无法触发事件。
我创建了一个小提琴来演示这个问题: http : //jsfiddle.net/PsR6x/1/
我究竟做错了什么?
更新
第二个绑定在jQuery v1.3.2
和v1.5.2
调用,但不在v1.6.4
及更高版本中v1.6.4
。 在任何版本中都不会调用第三个绑定。
而不是bind
也不起作用。
事件名称空间不是层次结构。
使用你拥有的代码, $('#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'); });
在这里,你基本上为第一个创建了三个独立的命名空间,为第二个和第三个创建了两个独立的命名空间。
仔细看看这个例子并阅读我留给你的评论。 尝试许多不同的事情,看看你可以做的不同的事情,有时是有用的。
关于on()
不工作:
这段代码直接取自jquery-1.7.1.js:
bind: function( types, data, fn ) { return this.on( types, null, data, fn ); }
正如您所看到的, bind()
只是on()
的包装器,并且应该完全相同,但bind()
不支持选择器或委托。