问题:
相同环境,引用 1.9.1.min.js
$('div[data-role="page"]').live('pagehide', function (event, ui) {
$(event.currentTarget).remove();
});
这个报错,提示 Uncaught TypeError: Object [object Object] has no method 'live'
而引用1.7就不会。
谁能解释一下,一般都是高版本兼容低版的。还是我下载的1.9.1.min.js 有问题。谁能提供一个没有这个BUG 1.9.1.min.js 文件。(我1.9.1.min.js 是在官网下载的)
解答:
这并不是 jQuery 的 bug。jQuery 1.9 较之前的版本做了很大的调整,很多函数都不被支持。
例如 live(),die(),toggle(),sub(),$.browser 等等都已经被移除,完整的更新内容见 http://jquery.com/upgrade-guide/1.9/ (英文)。
在不改变你网站代码的同时,要使用 1.9 之后的版本,你需要使用 jQuery Migrate(转移、过度),详见 http://blog.jquery.com/2013/01/31/jquery-migrate-1-1-0-released/ (英文)。
Migrate 应该只是暂时性的。为了和 jQuery 保持同步,建议你从现在开始根据 1.9 的改变重写你网站的所有代码。
所以之前你的代码如果是
$("#ele").live("click", function() {
//...
});
现在要写成
$("#ele").on("click", function() {
//...
});
动态生成的元素要使用 live,要写成
$(document).on("click", "#ele", function() {
//...
});