jQuery从父div中删除类不起作用

时间:2015-05-08 18:06:27

标签: jquery

有没有人有任何想法为什么removeClass不适合我?反应中的removeClass和.required都不适用于任何实例。

JSFiddle:http://jsfiddle.net/6y4wdf7g/10/

if ($(".required").val() === '') {
    $(".required").parent().addClass("has-error");
    $("#response").removeClass("alert-success");
    $("#response").addClass("alert-warning");
    $("#response .message").html("<strong>Error</strong>: It appear's you have forgotten to complete something!");
    $("#response").fadeIn();
} else {
    $(".required").parent().removeClass("has-error");
    // .....
}

2 个答案:

答案 0 :(得分:1)

首先,在查看您在JSFiddle上发布的HTML时,我注意到您使用id="response"有两个元素。那会引起问题。 ID应该是唯一的,因此只有一个元素应具有相同的ID。

从技术上讲,removeClass可以正常工作。问题是你的逻辑。您正在使用$(".required").val() === ''检查所有字段,这些字段无法正常工作。如果第一个.required表单字段中存在值而不是.required的任何其余部分中的值,则逻辑将自动触发您的else子句(因为技术上.required的第一次迭代有价值)。如果第一个.required表单字段中没有值,则表示所有表单字段都为空,因此删除类将不起作用。

如果我理解正确的话,你会想要做更多这样的事情:

var errorCounter = 0;

$(".required").each(function(i, obj) {

    if($(this).val() === ''){
        $(this).parent().addClass("has-error");
        errorCounter++;
    } else {
        $(this).parent().removeClass("has-error");
    }

});

if (errorCounter > 0) {
    $("#response").removeClass("alert-success").addClass("alert-warning").fadeIn();
    $("#response .message").html("<strong>Error</strong>: It appear's you have forgotten to complete something!");
}

希望这会有所帮助。如果您有任何问题,请告诉我。

答案 1 :(得分:0)

根据您提供的信息,我不得不猜测您的查询无效或者代码与html之间的类名不一致。