何时使用bind以及何时在jquery中使用委托

时间:2012-09-03 08:13:31

标签: jquery

我很想知道何时应该使用绑定函数以及何时应该在jquery中使用委托函数。他们没有执行相同的功能吗?有什么区别?

1 个答案:

答案 0 :(得分:3)

您使用bind(或者更好,on,因为bind已被弃用; @Yoshi指出,当您有一些现有元素时你想绑定事件监听器。当您想要处理的元素尚不存在时使用delegate(例如,它们是动态生成的,您不希望将处理程序绑定到您创建的每个新元素,但是它们有一个共同的父元素,您可以将它们放在委托on),或当你用一个共同的父代处理很多元素的事件时(对于父代表的委托更有效,而不是每个元素上的单个处理程序)。

DOM事件冒泡在DOM层次结构中,因此当您单击元素onclick时,会触发该元素的处理程序,然后处理其父项的处理程序,然后是其父项,依此类推(除非处理程序在事件上调用stopPropagation,这会取消进一步冒泡。当您使用bind / on时,将处理程序附加到要处理的特定元素,并且它是由您设置的目标直接触发的;当您使用delegate时,jQuery内部处理程序将附加到您指定的元素,并且它会在泡泡链上捕获事件; jQuery然后检查实际目标(处理程序附加到的元素的子元素)是否与您使用委托指定的选择器匹配,如果是,则调用它(如果您的实际处理程序已附加到目标元素而不是父元素;由@shannon注明。