gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:03:07 25 4
gpt4 key购买 nike

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

但是我一定错过了一些东西,因为除非命名空间完全匹配,否则我无法触发事件。

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

我做错了什么?

更新

第二个绑定(bind)在 jQuery v1.3.2v1.5.2 中调用,但不在 v1.6.4 及更高版本中调用。任何版本都不会调用第三次绑定(bind)。

on 而不是 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');
});

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

仔细看this example并阅读我给你留下的评论。有时尝试许多不同的事情,看看你可以做哪些不同的事情是很有用的。

关于 on() 不起作用:
此代码片段直接取自 jquery-1.7.1.js:

bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
}

如您所见,bind() 只是 on() 的包装器,并且工作原理应该完全相同,但 bind( ) 不支持选择器或委托(delegate)。

关于jquery - 自定义命名空间事件将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com