javascript - Jquery live 函数突然不工作了

标签 javascript jquery

我正在使用 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 开始被删除。

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

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

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

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

关于javascript - Jquery live 函数突然不工作了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14628028/

相关文章:

javascript - 函数运行函数

javascript - Jquery/Html 表单

javascript - 如何在脚本标签中正确使用 defer/async 属性

jquery - Angular.js 和 Bootstrap - jQuery 依赖项

javascript - jQuery 数据属性未设置

javascript - AngularJS 中的 deferred.resolve()

javascript - 在 TVOS 模拟器中重新加载和调试 JavaScript

javascript - 使用 eval 解析 JSON 字符串

javascript - 带有 html 注入(inject)的 Firefox 问题

javascript - 如何让 jQuery 改变滚动条上的导航颜色?