验证错误消息淡出后,标签消失


Label disappears after validation error message fades out

这里有一个小问题。我有一个留言簿的表格,每个输入都经过验证,因此它是空的,出现一条错误消息。我已经调整了jquery部分,使错误消息延迟2秒,然后淡出,如下所示:

$(document).ready(function(){
var working = false;
$('#addCommentForm').submit(function(e){
    e.preventDefault();
    if(working) return false;
    working = true;
    $('#submit').val('Working..');
    $('.error').remove();
    $.post('submit.php',$(this).serialize(),function(msg){
        working = false;
        $('#submit').val('Submit');
        if(msg.status){
            $(msg.html).hide().insertAfter('#new').slideDown();
            $('#body').val('');
        }

        else {
            /* This is the section im stuck with */
            $.each(msg.errors,function(k,v){
                $('[for='+k+']').append('<div class="error">'+v+'</div>').delay(2000).fadeOut();
            });
        }
    },'json');
});

});

但是,在错误消息淡出后,标签也会消失。我觉得它与代码的这一部分有关:

'[for='+k+']'

有什么方法可以解决这个问题,以便只有错误消息淡出而不是标签?

如果您需要我提供更多代码,请告诉我。

你是对的:

$('[for='+k+']').append('<div class="error">'+v+'</div>').delay(2000).fadeOut();

表示您追加一个元素,等待并淡出选择了 [for=...] 的任何元素。

解决方案可能是使用appendTo()

$('<div class="error">'+v+'</div>').appendTo('[for='+k+']').delay(2000).fadeOut();