jQuery .on()而不是没有事件的.delegate()

时间:2012-08-09 14:32:26

标签: jquery jquery-on jquery-delegate

当没有要收听的事件时,是否可以使用jquery .on()方法而不是.delegate()

根据.on()文档:

  

.on(events [,selector] [,data],handler(eventObject))

events参数不是可选的。

.on() / .delegate()的使用适用于动态添加的元素。

3 个答案:

答案 0 :(得分:8)

您可以使用自定义事件:(它仍然是一个事件,但是您的事件)

标记:

<div id='mePlease'>
 <div id='noWay'>Hi</div>
</div>

$('#mePlease').on('wacky','#noWay',function(){
   alert('wackyEnough');
});
$('#noWay').trigger('wacky');

但实际上,这可以通过一个简单的函数调用来完成。

答案 1 :(得分:6)

这些功能的目的是将功能委托给事件;所以不,你不能省略这些函数调用中的events参数。

我怀疑你想要的是对页面加载(异步)之后加载的一些元素“做什么”,不是吗?也许你还需要对已经存在 on page-load?

的元素做这些事情

在这种情况下,我建议你将声明包装在一个函数中,并在页面加载和异步调用完成后调用该函数。

答案 2 :(得分:0)

由于.on()的目的是将事件处理程序附加到某个元素,因此在没有事件的情况下使用它是完全没有意义的。这就是为什么需要事件参数。

来自doc:

  

描述:将一个或多个事件的事件处理函数附加到所选元素。