我正在写这个jQuery代码:

$('form').after('<p id="suc"></p>');
$('#suc').html('success !');
$('#suc').show(700);
setTimeout(function(){$('#suc').hide('slow')},2500);
$('#suc').remove();


当我像这样删除$('#suc').remove();时:

$('form').after('<p id="suc"></p>');
$('#suc').html('success !');
$('#suc').show(700);
setTimeout(function(){$('#suc').hide('slow')},2500);


该代码运行成功,但是当我放它时,它没有运行!

那是什么问题呢?
但是在这里$('#suc').remove();是非法的?

最佳答案

setTimeout调用在代码继续之前不会等待回调运行,因此您将立即删除该元素。当回调中的代码尝试隐藏该元素时,它不存在。

删除complete methodhide回调中的元素:

setTimeout(function(){
  $('#suc').hide('slow', function(){
    $('#suc').remove();
  });
},2500);

09-25 17:02