如果你想使用的.on()
动态版本,那么你需要使用此表单:
$(staticParentSelector).on('click', '.displayBig', fn);
staticParentSelector
必须是指向您的动态父级的选择器c对象,并在您运行上述jQuery来安装事件处理程序时出现,并且它必须是在安装事件处理程序之后未被销毁并重新创建的对象。与第二个选择器匹配的对象(我将调用动态选择器)不需要初始存在,并且可以在将来随时创建。
在最坏的情况下,它可能是这样的:
$(document).on('click', '.displayBig', fn);
由于document
对象满足所有的静态父的标准。但是,如果选择离您的实际动态对象更近的静态父级,并且您没有为所有动态事件使用document
对象,则事件的性能会更好。
所以,如果你有HTML这样的:
<div id="container">
<a href="images/large_4.jpg" class="displayBig" data="gallery0">
<div id="magnify">dsfsfdsfs</div>
</a>
</div>
然后,你可以使用的.on()
这样一个动态的版本:
$("#container").on('click', '.displayBig', fn);
的方式.on()
工作动态版本是,它将单个事件处理程序绑定到静态对象。然后,当有人点击其中一个动态对象时,对象上没有直接的事件处理程序用于点击,因此点击会通过祖先对象起泡。当事件到达具有事件处理程序的staticParent对象时,它会看到已安装动态事件处理程序,并将发起该事件的对象与动态选择器进行比较。如果它们匹配,它将触发事件处理程序。如果它们不匹配,则不会触发事件。
这个问题是我需要事件冒泡。 “如果省略选择符或为null,则事件处理程序称为直接或直接绑定。每次在选定元素上发生事件时都会调用处理程序,无论它是直接发生在元素上,还是直接发生在元素上或来自子节点的气泡(内部)元素 提供选择器时,事件处理程序称为委派。当事件直接发生在绑定元素上时,不会调用该处理程序,而只会为与选择器匹配的后代(内部元素)调用该处理程序。 jQuery将事件从事件目标直到元素“ – Tom 2012-04-12 06:49:52