【发布时间】:2012-10-01 13:13:39
【问题描述】:
我有一个<div> 和id="modal" 使用jQuery load() 方法动态生成:
$('#modal').load('handlers/word.edit.php');
word.edit.php 包含一些输入元素,它们被加载到模态<div>。
使用 jQuery 的 keyup 方法我可以在事件触发后捕获输入值,但是
当元素被动态添加到模态 div 时,当用户输入他们的文本时不再触发该事件。
哪种 jQuery 方法支持处理由动态创建的元素触发的事件?
创建新输入元素的代码是:
$('#add').click(function() {
$('<input id="'+i+'" type="text" name="translations' + i + '" />')
.appendTo('#modal');
获取用户值的代码为:
$('input').keyup(function() {
handler = $(this).val();
name = $(this).attr('name');
第二个代码块似乎适用于原始元素,但不会被新的动态生成的元素触发。
【问题讨论】:
-
我还在我的 index.php
<script src="js/jquery-1.6.2.min.js"></script> <script src="js/jquery-ui-1.8.18.min.js"></script>上加载了两个版本的 jQuery,但不能使用函数 on 只能使用函数 live edit: #modal to input$('input').live('keyup', 'input', function() { handler = $(this).val(); name = $(this).attr('name'); alert(handler+" "+name); });当我使用代码时它工作正常,再次感谢您的帮助:) -
只是一个注释。您不加载两个版本的 JQuery。您加载了 1.6.2 版的 JQuery 和 1.8.18 版的 JQuery UI。 JQuery UI 用于用户界面组件,与 JQuery 不同。为了获得最佳实践,请尝试使用来自 Google 等在线资源的 JQuery 而不是本地文件。
-
@Carlos Eduardo Bruno Pereira 感谢您的清理,我一直认为两者都具有相同的包,仅存在 -ui 并添加了额外功能,但事实并非如此 :)
标签: javascript jquery