0

这就是我所拥有的:

<script language="javascript">
$('#click').one('click', function () {
   var html = '<input type="text" class="input-mini" id="new-input" />';
   $(this).parent().append(html);
});
$('#new-input').on('keyup', function (e) {
   alert('A key was pressed');
   if (e.keyCode == 13) {
      alert('Enter key pressed');
   }
});
</script>

其他 SO 答案的建议下,我发现我应该使用on()绑定动态创建的元素。我想要发生的是在用户按下<input>with ID内的 Enter 键后发生 AJAX 调用new-input。但是,当任何键被按下时,什么都不会发生。

keyup为了将方法绑定到新附加的<input>元素,我需要做什么?

谢谢

4

3 回答 3

3

阅读文档

.on()并不总是绑定动态创建的元素;只有当你传递一个选择器来监听以下内容时,它才会这样做:

$('some container').on('click', '.new-input', function() { ... });

此外,ID 必须是唯一的;你应该使用类。

于 2013-03-03T17:03:56.687 回答
1

jsfiddle 链接:http: //jsfiddle.net/qTd9c/

$('#click').one('click', function () {
    var html = '<input type="text" class="input-mini" id="new-input" />';
    $(this).parent().append(html);

    $('#new-input').on('keyup', function (e) {
        alert('A key was pressed');
        if (e.keyCode == 13) {
            alert('Enter key pressed');
        }
    });

});
于 2013-03-03T17:16:22.060 回答
1

在创建 keyup 绑定时,dom 上不会有匹配的元素 - 尝试在第一个回调中移动第二个绑定:

<script language="javascript">
    $('#click').one('click', function () {
       var html = $('<input type="text" class="input-mini" />');

       html.on('keyup', function (e) {
           alert('A key was pressed');
           if (e.keyCode == 13) {
               alert('Enter key pressed');
           }
        });

       $(this).parent().append(html);
    });
</script>
于 2013-03-03T17:11:16.270 回答