在jquery中将类应用于动态元素

时间:2013-06-07 11:12:25

标签: javascript jquery event-delegation

我创建了一个动态输入并为其应用了一个类,但它不起作用。
我的班级:

$(".numeric_input").keypress(function(e) {
    var a = [];
    var k = e.which;
    for (i = 48; i < 58; i++)
       a.push(i);
    if (!(a.indexOf(k)>=0))
       e.preventDefault();
});

我的代码:

var table = document.getElementById('sizeTable');
for(var i=0;i<sizes.length;i++) {
    $("<td></td>").html('<input type=text class=numeric_input name=rows['+i+'].quantity>').appendTo(tr);
    $(tr).appendTo(table);
}

应用于其他元素的同一个类正常工作。任何帮助

2 个答案:

答案 0 :(得分:3)

由于您是动态创建.numeric_input,因此您需要以不同方式定位事件。而不是.keypress()使用.on()

$(document).on('keypress', '.numeric_input', function (e) {
    var a = [];
    var k = e.which;
    for (i = 48; i < 58; i++)
       a.push(i);
    if (!(a.indexOf(k) >= 0))
       e.preventDefault();
});

答案 1 :(得分:2)

使用事件委派(作为动态添加的.numeric_input

$(document).on('keypress',".numeric_input",function(e) {