gpt4 book ai didi

jquery 委托(delegate)语法 .each()

转载 作者:行者123 更新时间:2023-12-01 01:04:11 25 4
gpt4 key购买 nike

我在使用委托(delegate)为 $.each 等效项编写语法时遇到问题。

我读过的所有示例都仅显示单击或悬停,但我将如何使用委托(delegate)语法编写此示例?

$("ul li a").each(function(){

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

});

干杯!!

编辑:根据大量评论(顺便谢谢),我想我最好发布一个更明确的示例。对于我之前的问题缺乏细节,我深表歉意。

例如,我想将工具提示绑定(bind)到页面上的 anchor 。我将有很多想要设置为提示的项目,并且我想通过使用委托(delegate)来减少内存开销。

据我了解,这就是我开始的方式:

$(document).delegate("a.tooltip", "click", function(event){

// run click event

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

// run mousenter, mouseleave events.

});

但是可以说,对于每个 anchor ,我想删除标题属性,这样当我悬停时它就不会显示在浏览器中。我想(不过我在这里猜测)任何类似的 native 事件都会在我的悬停事件之前运行,所以我想在悬停之前将其删除。

通常我会使用这样的东西:

$("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");

可以有更好的方法吗?

根据我在评论和回答中的理解,委托(delegate)仅涵盖事件,我仍然必须将此类内容分开。

最佳答案

您可能对 .delegate() 有一个误解。是或者它是如何工作的。它不是某种拦截所有 DOM 操作的魔法函数,它只是利用了 DOM 的事件冒泡功能,因此它只能用于事件。

基本上,如果您有 <div>元素,您打算向其中添加 <button>稍后,您可以使用 .delegate()将点击事件绑定(bind)到 <div>本身。

将来,当您添加按钮时,单击它将触发按钮的单击事件,并且它将继续向上冒泡 DOM,连续调用每个父元素的单击事件,直到到达文档根目录或处理程序之一调用 event.stopPropagation() 。在某一时刻,它将到达您的 <div> ,您在其中绑定(bind)了委托(delegate)事件。委托(delegate)事件将检查最初触发事件的元素是否与原始选择器(您首先想要将事件绑定(bind)到的选择器)匹配,如果匹配,它将在以下上下文中触发附加的事件处理程序 你的按钮,因此在事件处理程序中看起来按钮引发了事件。

正如你所见,这并没有什么魔力,它与监视 DOM 的变化或类似的事情无关。如果您想在向 DOM 添加元素时添加特殊类,则必须确保在发生这种情况时自己调用一个函数。

关于jquery 委托(delegate)语法 .each(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com