jQuery live() 适用于 jQuery 1.8.3 及更低版本,但不适用于 1.9.1 或 2.0



我已经使用http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js有一段时间了,一切都很好,但是1.8.3太老了,所以我决定转向最新的jQuery。突然之间,一些东西停止工作了:Quicksand插件和我自己的jQuery代码的一部分(在滑动器的每个幻灯片下显示额外的数据)。

你能帮我弄清楚是怎么回事吗?或者也许不值得迁移到1.8.3以上的jQuery版本?检查文件

HTML:

<a href="#" class="show" data-show="first">SHOW</a>
<a href="#" class="show" data-show="second">SHOW</a>
<div id="first">First paragraph.</div>
<div id="second">Second paragraph</div>

JS:

jQuery(".show").live("click", function (e) {
    var slide = '#' + jQuery(this).data('show');
    jQuery(slide).slideToggle();
    e.preventDefault();
});
CSS:

div { display: none; }

这是一个工作的jsfiddle: http://jsfiddle.net/ABrna/

尝试将jQuery更改为1.9.1或2.0并点击Run。脚本停止工作。为什么?

.live()方法自jQuery 1.7起已弃用,并在1.9中被删除。

http://jquery.com/upgrade-guide/1.9/live-removed

从jQuery 1.7开始,.live()方法已被弃用。使用.on()来附加事件处理程序。旧版本的jQuery用户应该使用.delegate()优先于。live()。

Doc .

.on()使用委托的.live()等价:

jQuery(document).on("click",".show", function (e) {
    var slide = '#' + jQuery(this).data('show');
    jQuery(slide).slideToggle();
    e.preventDefault();
});

但是你不应该在文档级别设置委托,而是使用最接近的静态容器。

jQuery 2.0不支持live函数。您可以在http://blog.jquery.com/2013/04/18/jquery-2-0-released/

中找到更多信息

相关内容

  • 没有找到相关文章

最新更新