7

出于某种原因,当我向各种输入添加一个类时(在用户按下提交后),此函数不会记录在这些输入中进行的按键操作。我必须做一些根本错误的事情,因为我已经尝试过$('incomplete_required').keyup(){},下面是什么,因为它看起来.on()更现代..

$(document).ready(function(){
    $('.incomplete_required').on("keyup", function(){
        console.log('keyed');
    });
});

我在这里做错了什么?

谢谢

4

3 回答 3

28

如果您正在动态更改 dom 中的元素 - 最好将事件委托给 dom 中的现有父级

$(document).ready(function(){
    $('body').on("keyup",'.incomplete_required', function(){
        console.log('keyed');
    });
});

显然替换body为 dom ready 上存在的最近的父元素

通过委托 - 事件将冒泡到“父”元素 - 这是处理事件的地方

于 2012-09-05T21:29:06.787 回答
2

在提交之前看到这个工作我认为你正在失去事件绑定,因为元素被重新渲染但文档就绪事件没有再次触发。

此处可能需要动态绑定解决方案:

$(document).ready(function(){
    $(document).on('keyup', '.incomplete_required', function(){
        console.log('keyed');
    });
});​

请注意,document距离很远,因此最近的静态元素会更好。

于 2012-09-05T21:31:32.817 回答
0

而是绑定到“keypress”事件。

编辑:http: //jsfiddle.net/RRgvU/

于 2012-09-05T21:27:05.363 回答