我最近将jQuery从1.8更新到2.1。我突然发现.live()停止工作。 我得到错误TypeError: $(…)。Live不是一个函数。
是否有任何方法可以用来代替.live()?
我最近将jQuery从1.8更新到2.1。我突然发现.live()停止工作。 我得到错误TypeError: $(…)。Live不是一个函数。
是否有任何方法可以用来代替.live()?
当前回答
jQuery >= 1.9 .live()的前向端口 避免重构JS对.live()的依赖 使用优化的DOM选择器上下文
/**
* Forward port jQuery.live()
* Wrapper for newer jQuery.on()
* Uses optimized selector context
* Only add if live() not already existing.
*/
if (typeof jQuery.fn.live == 'undefined' || !(jQuery.isFunction(jQuery.fn.live))) {
jQuery.fn.extend({
live: function (event, callback) {
if (this.selector) {
jQuery(document).on(event, this.selector, callback);
}
}
});
}
其他回答
jQuery API文档列出live()在1.7版已弃用,在1.9版已移除:link。
已弃用版本:1.7,已移除:1.9
此外,它还指出:
从jQuery 1.7开始,.live()方法已弃用。使用.on()附加事件处理程序。老版本jQuery的用户应该优先使用.delegate()而不是.live()
.live()已弃用,现已从jQuery 1.9中移除 你应该使用.on()
jQuery >= 1.9 .live()的前向端口 避免重构JS对.live()的依赖 使用优化的DOM选择器上下文
/**
* Forward port jQuery.live()
* Wrapper for newer jQuery.on()
* Uses optimized selector context
* Only add if live() not already existing.
*/
if (typeof jQuery.fn.live == 'undefined' || !(jQuery.isFunction(jQuery.fn.live))) {
jQuery.fn.extend({
live: function (event, callback) {
if (this.selector) {
jQuery(document).on(event, this.selector, callback);
}
}
});
}
一个非常简单的修复,不需要改变你的代码,只需要添加jquery迁移脚本,下载这里 https://github.com/jquery/jquery-migrate/
它提供了jquery弃用但需要的功能,如“live”,“浏览器”等
当我将得到这个错误在我的网站。它将停止一些功能 在我的网站上,经过研究,我找到了这个问题的解决方案,
$colorpicker_inputs.live('focus', function(e) {
jQuery(this).next('.farb-popup').show();
jQuery(this).parents('li').css( {
position : 'relative',
zIndex : '9999'
})
jQuery('#tabber').css( {
overflow : 'visible'
});
});
$colorpicker_inputs.live('blur', function(e) {
jQuery(this).next('.farb-popup').hide();
jQuery(this).parents('li').css( {
zIndex : '0'
})
});
应该替换'live'到'on'检查下面
$colorpicker_inputs.on('focus', function(e) {
jQuery(this).next('.farb-popup').show();
jQuery(this).parents('li').css( {
position : 'relative',
zIndex : '9999'
})
jQuery('#tabber').css( {
overflow : 'visible'
});
});
$colorpicker_inputs.on('blur', function(e) {
jQuery(this).next('.farb-popup').hide();
jQuery(this).parents('li').css( {
zIndex : '0'
})
});
下面是一个更基本的例子:
.live(event, selector, function)
改为:
.on(event, selector, function)