jQuery委托语法.each

问题描述

| 我无法使用委托为$ .each等效项编写语法。 我读过的所有示例都只显示了单击或悬停,但是如何使用委托语法编写它呢?
$(\"ul li a\").each(function(){

    $(this).addClass(\"foo\");

});
干杯!! 编辑:遵循大量评论(顺便说一句),我认为最好发布一个更明确的示例。对于先前问题中缺少详细信息,我深表歉意。 举例来说,我想将工具提示绑定到页面上的锚点。我将设置很多项目作为提示,并且希望通过使用委派来减少内存开销。 据我了解,这就是开始的方式:
$(document).delegate(\"a.tooltip\",\"click\",function(event){

// run click event

}).delegate(\"a.tooltip\",\"hover\",function(event){

// run mousenter,mouseleave events.

});
但是,对于每个锚点,我都想删除title属性,这样当我将鼠标悬停时,它不会显示在浏览器中。我会想象(尽管我在这里猜),类似的任何本机事件都将在悬停事件之前运行,因此我想在悬停之前将其删除。 通常我会使用这样的东西:
$(\"a.tooltip\").each(function () {
    // Store our title attribute and remove it so we don\'t get browser 
    //tooltips showing up.
    $.prop(this,\"data-old-title\",$.attr(this,\"title\"));
}).removeAttr(\"title\");
可以做一个更好的方法吗? 根据我在评论和回答中的理解,代表仅涵盖事件,而我仍然必须将类似的内容分开。     

解决方法

        您可能对ѭ3是什么或它是如何工作有误解。它不是某种魔术功能,可以拦截所有DOM操作,它只是利用DOM的事件冒泡功能,因此只能用于事件。 基本上,如果您有一个
<div>
元素,以后打算向其中添加
<button>
,则可以使用
.delegate()
将click事件绑定到
<div>
本身。 将来,当您添加按钮时,单击它会触发按钮的click事件,并且它将继续冒泡DOM,连续调用每个父元素的click事件,直到到达文档根目录为止或其中一个处理程序呼叫
event.stopPropagation()
。某一时刻,它将到达您的
<div>
,您已绑定了代表事件。委托事件将检查最初触发事件的元素是否与原始选择器(您首先要将事件绑定到该选择器)相匹配,如果匹配,则在按钮的上下文中触发附加的事件处理程序,因此在事件处理程序中,它看起来就像按钮引发了事件。 如您所见,这没有魔力,它与监视DOM的更改或类似内容无关。如果要在向DOM中添加元素时添加特殊类,则必须确保在发生这种情况时自行调用函数。     ,        
$(\"ul\").delegate(\"a\",\"hover\",function(){
    $(this).addClass(\"hover\");
});
    ,        没有适用于
.delegate()
的jQuery相当于
.each()
委托允许您将事件处理程序附加到现在或将来存在的对象上。 每个都允许您遍历对象的集合 如果您想基于某个事件将类
foo
添加到锚标记中,则可以执行以下操作:
$(\'ul li\').delegate(\'a\',\'click\',function(){
    $(this).addClass(\"foo\");
});