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版本? 检查Jsfiddle。

HTML:

SHOW SHOW 
First paragraph.
Second paragraph

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

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

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

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

文件

使用.on()使用委托等效于.live() .on()是:

 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/中找到更多信息。