如果您只需要绑定子元素,您将使用:
$("#my_target").on("click", ".my_class_target", handler);
".on" 事件替换了 "delegate, bind, live, etc"。现在,您可以将所有事件仅附加到一个位置。这非常好,因为在此之前您需要使用不适用于 ajax 元素的“绑定”,因为您的“实时”是有限的。
在我的示例中,您只能使用“#my_target”内的“.my_class_target”进行附加。因此,如果在 body 上附加起始元素,例如: "$("body").on("click", ".my_class_target", handle) 那么所有的 ".my_class_target" 都将被附加。然后,秘密就在你的“选择器”中"。请记住,第一个选择器 "$(#my_target")" 必须在页面加载时创建,而另一个选择器可以由 ajax 加载或由 dom 创建。
举个例子:
<div id="my_div">
<ul class="ul-1">
<li class="li-1-1"></li>
<li class="li-1-2"></li>
<li class="li-1-3"></li>
<li class="li-1-4">
<ul class="ul-2">
<li class="li-2-1"></li>
</ul>
</li>
</ul>
</div>
js:
my_function = function(){};
$("body").on("click", "li", my_function); //handle all li
$("body").on("click", "ul.ul-1 > li", my_function); //attach only in li-1-X
// if ul-1 is generate with ajax:
$("#my_div").on("click", "li", my_function); // will work with all li
$("ul.ul-1").on("click", "li", my_function); // wont work because the first selector "ul.ul-1" was not generated when the attach was called.
我希望这会有所帮助。
字体:
http://api.jquery.com/on/
http://api.jquery.com/category/selectors/