$(".quantidade").on("change blur", function() {
if ($(this).val().length) {
validateField("quantidade");
} else {
invalidateField("quantidade");
showGeneralMessage("É necessário preencher a quantidade!", "danger");
}
});
一切正常,直到添加了一个新项目:
$(".btn-add-produto").click(function() {
...
$("#listaProdutosPedido").append(content);
...
});
这个"内容"包括具有相同类的输入。添加此html片段后,类选择器不适用于它。我想这是因为当文档准备就绪时,那条HTML不存在。我如何重新加载" javascript /文档,以便选择器即使在将来的引用中工作?我尝试使用setInterval()进行检查,但它不能正常工作......
答案 0 :(得分:3)
您需要使用.on()
委托事件语法。在事件委派中,您将事件附加到父元素。在内部,jQuery依赖于事件能力来冒泡DOM树。当找到具有与您委派的选择器匹配的$(document).on("change blur", ".quantidade", function() {
if ($(this).val().length) {
validateField("quantidade");
} else {
invalidateField("quantidade");
showGeneralMessage("É necessário preencher a quantidade!", "danger");
}
});
属性的指定类型的事件时,将触发您的事件。
为了适应这种变化,请修改您的代码,如下所示:
document
请注意,在这个级别的高级别委派是非常低效的。对于包含新附加内容的最近父元素,应更改document
。在这种情况下,我用它来演示进程是如何发生的,因为在你的问题中没有指定HTML DOM树输出。在您的系统中实现此功能时,我建议您相应地更新{{1}}选择器。