假设这个 HTML 结构:
<ul id="navUL">
<li><a href="one.html">One</a></li>
<li><a href="two.html">Two</a></li>
<li><a href="three.html">Three</a></li>
</ul>
只是为了澄清(对我来说)....根据 jQuery 文档(http://api.jquery.com/delegate/),这是:
$("#navUL").delegate("a", "click", function(){
// anchor clicked
});
...相当于这个:
$("#navUL").each(function(){
$("a", this).live("click", function(){
// anchor clicked
});
});
但是,事件委托(据我所知)是这样的:
$("#navUL").click(function(e) {
if (e.target.nodeName !== "A") { return false; }
// anchor clicked
// anchor is referenced by e.target
});
因此,您捕获 UL 元素上的单击事件,然后通过event.target
属性确定实际单击了哪个锚点。
我不知道 delegate() 方法,但最后一种技术应该总是比将事件处理程序附加到 #navUL 元素中的每个锚点更快,如下所示:
$("#navUL a").click(function() {
// anchor clicked
// anchor is referenced by the this value
});