繁体   English   中英

Jquery现场功能突然不起作用了

[英]Jquery live function suddenly not working anymore

我正在使用jQuery live()函数来检测用户何时按某些特殊键(箭头等):

$('.TextBox1').live('keydown', function(e) {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 40) {
        e.preventDefault();
        // ...
    }
});

它工作正常几个月,突然昨天它停止工作,阻止它下面的每一行JS代码执行。 我试图用.keyup函数替换它,但这没有帮助。 可能发生了什么?

我假设您已更新到最新版本的jQuery? live()自jQ1.7以来已被弃用,现在从1.9开始删除。

相反,您应该使用带有委托参数的on()

$(document).on('keydown', '.TextBox1', function(e) {
    var keyCode = e.keyCode || e.which;

    if (keyCode == 40) {
        e.preventDefault();
        //...
    }
});

请注意,为了获得最佳性能,您应该将上面示例中的document替换为.TextBox1最接近的父元素,该元素在页面加载后不会动态附加到DOM。

jQuery .live已被弃用。 虽然不是严格相同,但使用.on()对于您的示例,它看起来像:

$('body').on('keydown', '.TextBox1', function() {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 40) {
        e.preventDefault();
        ...
    }
}

jQuery 1.9之后删除了.live()

从现在开始你必须使用.on

.live()已在最新版本的jQuery 1.9中删除。

您可以使用jQuery Migrate插件 ,或更改代码以使用.on

.live在jQuery 1.9中删除了。 如果你正在调用最新版本的jQuery,它将会破坏。

更改您的代码以使用.on

使用jquery网站上提到的这个。 对于你的例子,它将是

$(document).on( "keydown", ".TextBox1", function() { });

从jQuery 1.7开始,不推荐使用.live()方法。 使用.on()附加事件处理程序。 旧版jQuery的用户应该使用.delegate()而不是.live()。

有关实时的更多信息,请阅读此内容

实际上已经在jq 1.9中删除了,而不仅仅是已弃用! 您可以使用插件来兼容或更新您的代码

.live()在jq 1.9中已弃用,因此您可以尝试这样做

$('.TextBox1').on('keydown', function() {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 40) {
        e.preventDefault();
        ...
    }
}

你有没有将jquery更新为1.7?

从jQuery 1.7开始,不推荐使用.live()方法。

使用.on()附加事件处理程序:

$('.TextBox1').on('keydown', text_box_key_down_function);

你也可以使用bind:

$('.TextBox1').bind('keydown',text_box_key_down_function);

当JQ 1.9发布时,.live被删除了,所以我猜你已经将Jquery更新到了最新版本。

现在,尝试:

$('.TextBox1').on('keydown', function() {
    var keyCode = e.keyCode || e.which;
    if (keyCode == 40) {
        e.preventDefault();
        ...
    }
}

在JQ 1.9中删除了.live,但现在有了同时运行.live和.on的解决方案

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>

有关Jquery迁移的更多信息

来自stackoverflow的羽毛信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM