jquery有相同的dojo.connect()吗?

时间:2010-05-23 10:19:39

标签: javascript jquery dojo events connect

原谅我的无知,因为我对jquery并不熟悉。有没有等效于dojo.connect()?

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

但是没有断开功能!

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

感谢您的帮助,
斯蒂芬

4 个答案:

答案 0 :(得分:3)

最接近的等效jQuery是.bind(),例如:

$("#element").bind('eventName', function(e) {
 //stuff
});

.unbind()删除处理程序,如下所示:

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

There are also shortcuts for .bind(),所以例如click可以通过两种方式完成:

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

对于基于冒泡而不是直接附加的事件处理程序,还有.live().die()取消绑定)和.delegate().undelegate()取消绑定)。用于动态创建的元素。

以上示例是匿名函数,但您可以直接提供函数,就像dojo(或任何真正的javascript)一样,如下所示:

$("#element").click(myNamedFunction);

答案 1 :(得分:2)

dojo.connect()的等价物是什么意思?

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

proxy()功能将使您重新定义回调函数中 this 指向的内容。

答案 2 :(得分:1)

没有这样但你可以实现以下相同的事情:

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

这会将somefunc连接到id为“someid”的控件的click事件。单击控件时,将调用该函数,该参数将是一个引用被单击控件的jquery对象。

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

答案 3 :(得分:1)

jQuery connect等同于dojo.connect。