捕获动态创建的字段上的javascript事件
Catch javascript event on fields created dynamically
我有一个类命名为"form_inputext1"的输入字段。
我正在做一些动作时按ENTER,使用以下代码:
jQuery(".form_inputext1").keypress(function(event) {
console.log(event.keyCode);
if (event.keyCode == '13' || event.which == '13') {
event.preventDefault();
jQuery("#addMoreOptions").click();
return false;
}
});
这部分工作正常。它所做的事情之一是它添加了一个输入字段类"form_inputext1"作为一个ajax调用的结果。
问题是这个新添加的字段与我写的按键事件无关。我认为这是因为jQuery代码只将事件附加到现有的字段,而不是附加到将来添加的字段。
我该如何解决这个问题?我希望这个函数适用于onkeypress,即使输入还不在DOM中。
你可以使用Jquery的live:
jQuery(".form_inputext1").live('keypress', function(event) {
console.log(event.keyCode);
if (event.keyCode == '13' || event.which == '13') {
event.preventDefault();
jQuery("#addMoreOptions").click();
return false;
}
});
或者您可以在创建元素时添加按键事件,这将为您提供更好的性能:
$('.clicker').click(function() {
$('<div class="clicker" />').text('new').appendTo($(this)).keypress(function(event) {
alert(event.which);
})
})
用.live()
或.delegate()
代替。
如果你使用jQuery live方法绑定一个事件到一个类,它甚至会应用到你调用live方法后添加到DOM的元素。
文档:http://api.jquery.com/live/
来自文档:
<人力资源 />
使用以下方法将点击处理程序绑定到目标元素:
$('.clickme').live('click', function() {
// Live handler called.
});
然后再添加一个新元素:
$('body').append('Another target');
然后单击新元素也将触发处理程序。
使用.live()
:
$('.form_inputext1').live('keypress', function ( event ) {
});
相关文章:
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 在同一个javascript事件处理程序中调用不同的函数
- Javascript事件;在新选项卡中打开”;
- 存在每个时间元素的javascript事件
- Javascript事件.锚的目标问题
- 带有参数的Javascript事件处理程序
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- firefox中的Javascript事件范围问题
- Firefox中的JavaScript事件参数
- 在动态加载的PHP表单上放置JavaScript事件
- 如何在Javascript事件上从JSNI设置GWTClass字段
- Javascript事件发射器一次处理多个事件
- 在下拉式javascript事件监听器中选择时触发事件
- 在javascript中导入xlsx文件时,如何手动强制javascript事件
- 显示触发的JavaScript事件
- 正在取消IE11中的JavaScript事件
- 页面卸载期间的JavaScript事件循环
- 存在其他参数时访问Javascript事件
- 阻止Javascript事件影响子元素
- 如何在事件处理程序中获取 javascript 事件对象