响应新DOM的函数

时间:2013-11-20 22:31:46

标签: javascript ajax jquery dom

我有以下函数来计算用户在textarea中输入的字符数:

$("textarea").keyup(function() {
    var max = 500;
    var length = $(this).val().length;
    var char = max - length;
    if (length > max) {
        $(this).parent().find('.counter span').html('<div class="text-error">' + char + '</div>');
    } else {
        $(this).parent().find('.counter span').text(char);
    }
});

如果我向页面引入新的DOM,则上述功能对新引入的textarea不起作用。如何使其与新DOM一起使用?

感谢。

2 个答案:

答案 0 :(得分:6)

你想在jQuery中使用on函数。

$("body").on("keyup", "textarea" , function() { ...

http://api.jquery.com/on/

答案 1 :(得分:2)

MattDiamant的答案对你的情况有好处,但我想补充一下Copy-Paste的情况。

如果用户从另一个word文档复制并使用仅鼠标(右键单击 - &gt;粘贴)将其粘贴到keyarea中,则不会触发该keyup。

所以,除了'keyup'之外,我建议你添加事件'input','propertychange',这样你的on函数将是:

$("body").on('keyup input propertychange', 'textarea', function() { ... });