jQuery有没有类似于dojo.connect()的等效函数?

4

请原谅我的无知,因为我对jquery不是很熟悉。是否有类似于dojo.connect()的等效方法?

我找到了这个解决方案:http://think-robot.com/2009/06/hitch-object-oriented-event-handlers-with-jquery/

但是它没有断开连接的功能!

你知道jquery中的其他解决方案吗?有jquery.connect,但是在我的测试中这个插件不起作用。

感谢您的帮助,
Stephane


请注意,dojo.connect正在被dojo/on函数所取代:http://dojotoolkit.org/reference-guide/1.8/dojo/on.html - Steve Wranovsky
4个回答

3
最接近的jQuery等价物是.bind(),例如:
$("#element").bind('eventName', function(e) {
 //stuff
});

使用.unbind()来移除处理程序,如下所示:

$("#element").unbind('eventName');

.bind()也有快捷方式,例如,click可以有两种方法:

$("#element").bind('click', function() { alert('clicked!'); });
//or...
$("#element").click(function() { alert('clicked!'); });

还有.live()(使用.die()来解除绑定)和.delegate()(使用.undelegate()来解除绑定),用于基于冒泡的事件处理程序,而不是直接附加,例如用于动态创建的元素。
上面的示例是匿名函数,但是您可以像dojo(或任何javascript一样)直接提供一个函数,如下所示:
$("#element").click(myNamedFunction);

2

dojo.connect()的相当之处是什么意思?

如果您想创建自己的自定义事件处理程序,请查看Events中的bind()trigger()proxy()

proxy()函数可以让您重新定义回调函数中的this指向。


proxy() 函数将允许您重新定义回调函数中的 this 指向。 - Stéphane Klein
1
在dojotoolkit中,我可以进行以下操作:dojo.connect(obj, "on_custom_event", obj2, obj2.action);obj可以是DOM节点或简单的JavaScript对象。而在jQuery中,bind只能在DOM节点元素上使用。 - Stéphane Klein

1

虽然没有这样的功能,但您可以通过以下方式实现相同的效果:

$('#someid').click(function() { SomeFunc($(this)) });

这将把somefunc与id为“someid”的控件的点击事件连接起来。当单击该控件时,将调用该函数,并且参数将是一个jQuery对象,该对象引用被单击的控件。

更新 我刚刚做了更多的研究,我认为.delegate()更接近您想要的。


1

jQuery connect 相当于 dojo.connect。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接