我已经使用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/