Javascript 重新加载元素后代码失败

Javascript code fails after element is reloaded

我有计算文本区域中字符数的 JS 代码。它工作一次,但一旦元素重新加载更新的数据,它就会在后续请求中失败。

<head>
  <title>Test</title>
  <script type="text/javascript" src="jquery.min.js"></script>
</head>

<body>

<script>
var counter = function(el,char_el,num_el){
    var cha = el.val().length;
    var num = Math.ceil(cha / 160);
    if(num == 0)
        num = 1;
    char_el.html(cha);
    num_el.html(num);
}
$(document).ready(function(){
    $("#TextMsg").keyup(function(){
        counter($(this),$(".char"),$(".num"));
    });
    $("#TextMsg").keyup();
});
</script>

<div id='showsn'>
<textarea id="TextMsg"></textarea>
<p><span class='char'></span>کارکتر</p>
<p><span class='num'></span>پارت</p>
</div>

</body>

如何让代码在重新加载元素后起作用?

您向更新 div 内容时销毁的元素添加事件侦听器。所以事件处理程序也被删除了!

你可以做的是使用 jQuery on() 方法,该方法允许在特定选择器(你的 texteara for例子)。所以在div更新

后事件处理程序不会被销毁并继续监听事件。
 $('#showsn').on('keyup', '#TextMsg', function () {
    counter($(this), ".char", ".num");
});

您可以在此处查看工作示例:http://jsfiddle.net/royto/pjfcgsx6/