0

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

4

1 回答 1

3

当您有一些想要将事件侦听器绑定到的现有元素时,您可以使用bind(或者更好的是on,已弃用;@Yoshi 指出)。当您要处理的元素尚不存在时使用(例如,它们是动态生成的,并且您不想将处理程序绑定到您创建的每个新元素,但它们有一个可以放置委托的共同父级),或者当您在具有共同父级的许多元素上处理事件时(在父级上使用委托比在每个元素上使用单独的处理程序更有效)。binddelegate

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

于 2012-09-03T08:16:01.923 回答