jQuery live()适用于jQuery 1.8.3&低于但不是1.9.1或2.0

时间:2013-05-14 12:35:25

标签: jquery live jquery-1.9 jquery-1.8 jquery-2.0

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

你可以帮我弄清楚什么是错的吗?或者也许不值得转移到1.8.3以上的jQuery版本?检查Jsfiddle。

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。脚本停止工作。为什么呢?

4 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

  

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

Doc

答案 2 :(得分:3)

使用.live()授权的.on()等效于:

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

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

答案 3 :(得分:-1)

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

中找到更多信息
相关问题