Jquery不适用于document.ready之后创建的元素

时间:2013-09-25 09:48:07

标签: javascript jquery

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

但问题是,由于仅在点击期间附加新元素,因此元素不响应jquery事件。

Bellow是我场景中的一个事件:

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

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

我该如何解决?有人可以帮忙吗?

提前致谢。

4 个答案:

答案 0 :(得分:5)

委托活动:

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

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

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

  

模糊事件在Internet Explorer中不会出现气泡。因此,   依赖于模糊事件的事件委托的脚本不会   跨浏览器一致地工作。但是,从版本1.4.2开始,   jQuery通过将模糊映射到焦点来解决这个限制   事件委托方法中的事件,.live()和.delegate()。

答案 1 :(得分:2)

您需要使用on()

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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