为什么keyup事件不适用于动态添加到页面的输入标签?

时间:2013-11-19 07:15:36

标签: jquery

我想通过jquery动态添加输入标签添加到我的页面但是当添加它时“keyup”事件不起作用,但是当通过硬编码向页面添加输入时它可以工作。

我通过firebug查看我的代码,每一件事情都可以,但是当我要通过“.txtbox”类定义所有元素的页面时,我会这样做。当我添加另一个dinamically时,不是这个事件。

我该如何处理这个问题?

var i = 0;//generate a number for id
function addit() {
i = i + 1;

  //this line add dynamic input to a div with class ".x"
 $(".x").prepend('<input id=\'Text1' + i + '\' value=\'' + i+ '\' type=\'text\'
                    class=\'txtbox\'  /><br />');

}

//when page load all ".txtbox" classes get "keyup" event
$(function () 
   {
  $('.txtbox').keyup(function(e){
      if (e.keyCode == 13) {
          alert("hi");
        }
    });
});


//html codes
<input id="Button1" type="button" value="add it" onclick="addit()" />

 <div class="x">
        <input id="Text11" value="1" type="text" class="txtbox" /><br />
  </div>

1 个答案:

答案 0 :(得分:2)

.on()与事件委派

一起使用
 $('.x').on("keyup",".txtbox",function(e){
      if (e.keyCode == 13) {//here you use e.which then it will good
          alert("hi");
        }
    });

使用 event.which

event.which属性规范化event.keyCode和event.charCode。建议观看event.which键盘输入键。