jQuery live() works with jQuery 1.8.3 & below but not with 1.9.1 or 2.0

笑着哭i 提交于 2019-12-25 11:52:46

问题


I've been using http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js for a while now and everything has been fine, but 1.8.3 got quite old so I've decided to move to the latest jQuery. And suddenly a few things stopped working: Quicksand plugin and part of my own jQuery code (that shows additional data under every slide of a slider).

Can you help me figuring out what's wrong? Or maybe it's not worth moving to jQuery versions above 1.8.3? Check the 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; }

Here's a working jsfiddle: http://jsfiddle.net/ABrna/

Try changing jQuery to 1.9.1 or 2.0 and hit Run. Script stops working. Why?


回答1:


The .live() method has been deprecated since jQuery 1.7 and has been removed in 1.9.

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




回答2:


As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().

Doc.




回答3:


Equivalent to .live() using delegation with .on() is:

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

But you shouldn't set delegation at document level but use instead closest static container.




回答4:


jQuery 2.0 deprecate the live function. You can find more information in http://blog.jquery.com/2013/04/18/jquery-2-0-released/



来源:https://stackoverflow.com/questions/16543309/jquery-live-works-with-jquery-1-8-3-below-but-not-with-1-9-1-or-2-0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!