jquery - jQuery.live 的替代品是什么

标签 jquery

什么应该是 jQuery.live() 的正确替代品。我知道 jQuery.on() 做同样的事情,但是对于 jQuery.on() 我们必须指定父级才能使其工作。

假设我的页面上有 500 个 live,现在我想将所有 500 个 live 更改为 on,通过选择每个元素的父元素来完成此操作是不可行的,并且需要更多时间。

假设我有 $(".item").live("click",function(){alert("test"); });

如果我用 jQuery.on() 替换它,那么它应该是 $("body").on("click",".item",function(){alert("test"); });

但我想知道是否有一些捷径或其他方法可以实现这样的目的

$(".item").on("click",function(){ alert("test"); });

这样我就可以在几秒钟内更换所有内容。

最佳答案

.live()死了,万岁.live() : https://github.com/jquery/jquery/commit/eed78cc321ed7e2b37fb34e32fbb528b24f61d6e

虽然说真的,对于您想要的俏皮话,您可以将其添加回来:

jQuery.fn.live = function( types, data, fn ) { jQuery( this.context ).on( types, this.selector, data, fn ); return this; }

将其添加到 JS 的顶部以有效创建一个垫片,该垫片将允许您使用 .live()如您所愿,而不关心您使用的是哪个版本的 jQuery。

但实际上,就像其他人所说的那样,您应该使用您选择的文本编辑器或像 sed 这样的命令行实用程序执行查找替换操作。在我给您的填充解决方案中,您正在调用一个函数来调用另一个函数,这会带来大量开销,并且可能会使用不必要的资源量。 .on()效率更高,特别是直接调用它时。

<小时/>

更新:上述解决方案依赖于jQuery内部.context属性(property),其中has been deprecated自 jQuery 1.10 起,可能会在任何后续版本中消失。 大多数时候应该满足您的需求的替代版本是简单地替换 this.contextdocument 。这具有 .context property's API 中概述的限制:

The value of this property is typically equal to document, as this is the default context for jQuery objects if none is supplied. The context may differ if, for example, the object was created by searching within an <iframe> or XML document.

所以它可能会失败。不管怎样,现在你绝对没有理由不使用 .on()直接地。欢迎查看my tips on upgrading to the most recent version of jQuery .

关于jquery - jQuery.live 的替代品是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15333147/

相关文章:

javascript - 如何使用 Node js将多个请求(?)对象发送到浏览器

javascript - 使用 javascript 更改表行名称属性

jquery - 当图像进入视口(viewport)时延迟加载图像

javascript - jQuery/JS - 如何在条件中排除具有特定 href 的 <a>?

jquery - Django ajax错误响应最佳实践

javascript - 使用 jquery 将数字传递给 for 循环函数

javascript - 为什么我的窗口滚动事件根本不触发。其他答案没解决

javascript - 如何使用 jQuery 识别可能包含注释标记的空元素?

javascript - 无法在 Jqgrid 页脚中添加列名称来计算总和

javascript - 检查数组中的值是否在范围内