当前位置: 首页 > 面试题库 >

JavaScript由动态生成的元素触发的事件未被事件处理程序捕获

邴英毅
2023-03-14
问题内容

我有一个<div>id="modal"jQuery load()方法动态生成的with :

$('#modal').load('handlers/word.edit.php');

word.edit.php包含一些输入元素,它们被加载到modal中<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');

第二个代码块似乎适用于原始元素,但不会由新的动态生成的元素触发。


问题答案:

你需要将事件委托给页面内最接近的静态祖先元素。这只是意味着,绑定事件处理程序的元素在绑定处理程序时必须已经存在,因此对于动态生成的元素,你必须允许事件冒泡并进一步处理。

jQuery .on方法是执行此操作的方法(或.delegate对于较旧版本的jQuery。)

// If version 1.7 or above

$('#modal').on('keyup', 'input', function() {
    handler = $(this).val();
    name = $(this).attr('name');
});

或旧版本

// If version 1.6 or below

// note the selector and event are in a different order than above
$('#modal').delegate('input', 'keyup', function()
{
    handler = $(this).val();
    name = $(this).attr('name');
});


 类似资料:
  • 问题内容: 有什么方法可以获取触发事件的元素的ID? 我在想类似的东西: 当然,如果从第一种形式触发事件,则var 应该包含id ;如果从第二种形式触发事件,则var 应该包含id 。 问题答案: 在jQuery中,始终指触发事件的元素,其中传递给函数的参数在哪里。 还请注意,这也将起作用,但它不是jQuery对象,因此,如果您希望在其上使用jQuery函数,则必须将其称为,例如:

  • 事件 事件,就是文档与浏览器发生特定的 交互瞬间。JavaScript与HTML之间的交互就是通过事件实现的。 事件流 所谓事件流,就是接收页面事件的顺序。 事件流分 事件冒泡流 与 事件捕获流。事件冒泡流是IE开发团队提出的,捕获流是Netscape开发团队提出的。 事件冒泡流 所谓事件冒泡,就是事件开始时由 最具体的元素(文档中嵌套最深的那个 节点)接收,然后逐级向上传播到较为不具体的节点(文

  • 我的react中有一个滚动的事件处理程序,我正试图使它成为被动的。但它不起作用,我在控制台中不断收到以下警告: 将事件处理程序标记为“被动”以使页面更加响应。 下面是我阅读事件的地方: 这是我的EventContainer中的函数。js文件: 在这一行: {被动:被动} 我得到以下错误在我的编辑器: 参数类型{passive:boolean}不可分配给参数类型boolean 有人知道我做错了什么吗

  • 本文向大家介绍详解JavaScript中的事件流和事件处理程序,包括了详解JavaScript中的事件流和事件处理程序的使用技巧和注意事项,需要的朋友参考一下 事件流:分两种,IE的是 事件冒泡流 ,事件开始时从最具体的元素接收,逐级向上传播到较为不具体的节点(Element -> Document)。与之相反的是 Netscape 的 事件捕获流 。 DOM2级事件规定事件流包括三个阶段:事件捕

  • 本文向大家介绍学习JavaScript事件流和事件处理程序,包括了学习JavaScript事件流和事件处理程序的使用技巧和注意事项,需要的朋友参考一下 本文全篇介绍了JavaScript事件流和事件处理程序,分享给大家供大家参考,具体内容如下 一、事件流 事件流描述的是从页面中接收事件的顺序。IE的事件流是事件冒泡流,而Netscape Communicator的事件流是事件捕获流。 二、事件冒泡