附加后类选择器不起作用(JQuery)

时间:2015-12-02 19:50:10

标签: javascript jquery html

    $(".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()进行检查,但它不能正常工作......

1 个答案:

答案 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}}选择器。