1

在我的代码中,我在单击“+”/加号按钮时添加了一整套新元素。

但问题是,由于我仅在单击期间附加新元素,因此这些元素没有响应 jquery 事件。

贝娄是我场景中的一个事件:

$("#form input[type='text']").blur(validateField);

此事件适用于所有输入元素,除了我在单击“+”/加号按钮时动态附加的一次。

我该如何解决?谁能帮忙?

提前致谢。

4

4 回答 4

5

代表活动:

$(document.body).on('focusout',"#form input[type='text']",validateField);

由于默认情况下 onblur 事件不会冒泡,因此请改用 onfocusout 事件。

编辑:刚刚检查,jquery 现在通过映射 onblur 事件添加对 onblur 事件的委托支持。

blur 事件不会在 Internet Explorer 中冒泡。因此,依赖于带有 blur 事件的事件委托的脚本将无法在浏览器中始终如一地工作。然而,从 1.4.2 版本开始,jQuery 通过在其事件委托方法 .live() 和 .delegate() 中将模糊映射到 focusout 事件来解决这个限制。

于 2013-09-25T09:49:56.093 回答
2

你需要使用on()

$("#form input[type='text']").on("blur",validateField);
于 2013-09-25T09:50:03.267 回答
2

对这些新创建的元素使用.on()or .live()or.delegate()方法。它会起作用的。

于 2013-09-25T09:50:07.957 回答
1

尝试将事件委托给静态父级:

$("#form").on('blur', 'input[type="text"]', validateField);
于 2013-09-25T09:50:57.617 回答