jQuery插入,然后淡出然后删除

时间:2015-03-09 03:06:09

标签: javascript jquery fadeout insertafter

我正在验证表单,如果有问题,我在输入问题后立即添加消息&然后在一段时间后淡出它。问题是我也希望从DOM中删除该消息。

我google了一下,看起来我必须使用fadeout(function(){})或队列。嗯,在其他情况下也没关系,但是当我插入它并使用相同的线移除时,它有点棘手。还有其他更简单的“一线”方式吗?

我试图添加另一个(更长的延迟),但这根本不起作用。

$("<div style='color: red'>Maximum length is "+$(this).attr('maxlength')+" characters!</div>").insertAfter($(this)).delay(5000).fadeOut().delay(5010).remove();

我也不能真正使用ID,因为它可以同时抛出多个ID,或者用户可以快速修复一个输入并单击提交,它会同时删除旧消息和新消息。

感谢。

Ps。:只有这样做我能想到的是为每个元素生成随机ID并使用该ID删除它,但这太过于复杂恕我直言。

为了澄清:上面的那一行是在一个循环中,循环通过一个表格中的每个输入和textarea,如果仅检查minlength,maxlength和number,它们就很简单。这就是为什么我不能放置一些静态ID / Class,它不会真正起作用,因为我想要它(只删除添加的元素,没有其他元素,即使再次添加相同的消息,因为用户再次提交表单等) 。 THX。

1 个答案:

答案 0 :(得分:0)

每条错误消息都与我认为的字段有关,因此您可以为每条错误消息分配一个ID而不会出现任何问题。所以这段代码很有用:

  $("<div style='color: red' id="FieldName_error">Maximum length is "+$(this).attr('maxlength')+" characters!</div>").insertAfter($(this));

 //This function executes after 2 seconds.
 setTimeout(function(){
    $("#FieldName_error").fadeOut("slow", function(){
        $(this).remove();
    })
 }, 2000)