我已经使用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。脚本停止工作。为什么呢?
答案 0 :(得分:4)
.live()方法自jQuery 1.7以来已被弃用,并已在1.9中删除。
答案 1 :(得分:3)
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来 附加事件处理程序。旧版jQuery的用户应该使用 .delegate()优先于.live()。
答案 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/
中找到更多信息