什么应该是jQuery.live()的正确替代品.我知道jQuery.on()做同样的事情,但是在jQuery.on()的情况下,我们必须指定父进程才能使它工作.
假设我的页面上有500个直播,现在我想将所有500个实时更改为on并通过选择每个元素的父级来完成它将不可行并且需要更多时间.
假设我有 $(".item").live("click",function(){ alert("test"); });
如果我用jQuery.on()替换它,那么它应该是 $("body").on("click",".item",function(){ alert("test"); });
但我想知道是否有一些快捷方式或其他任何东西来实现这一点
$(".item").on("click",function(){ alert("test"); });
Run Code Online (Sandbox Code Playgroud)
所以我可以在几秒钟内更换所有.
.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; }
Run Code Online (Sandbox Code Playgroud)
将它添加到您的 JS 的顶部以有效地创建一个 shim,它允许您.live()随意使用而无需关心您正在使用哪个版本的 jQuery。
但实际上,就像其他人所说的那样,您应该使用您选择的文本编辑器或命令行实用程序(如 sed)执行 find-replaceall 操作。在我给您的 shim 解决方案中,您正在调用一个函数来调用另一个函数,这会引入大量开销并可能使用不必要的资源量。.on()效率更高,尤其是如果您直接调用它。
更新:上述解决方案依赖于 jQuery 的内部.context属性,该属性自 jQuery 1.10 起已被弃用,并可能在任何后续版本中消失。大多数情况下应该满足您需求的替代版本是简单地替换this.context为document. 这具有.context 属性的 API 中概述的限制:
此属性的值通常等于 document,因为如果没有提供,这是 jQuery 对象的默认上下文。例如,如果对象是通过在
<iframe>或 XML 文档中搜索创建的,则上下文可能会有所不同。
所以它可能会失败。无论如何,现在你绝对没有理由不直接使用.on()。请随时查看我关于升级到最新版本 jQuery 的提示。
| 归档时间: |
|
| 查看次数: |
2339 次 |
| 最近记录: |