jquery fadeOut()多次使用相同的元素

时间:2011-06-02 19:55:21

标签: javascript jquery

我有以下代码,当事情发生时通知用户:

window.parent.$(".Toast").html('Successfully Did Something!').fadeOut(9000);

第一次它很棒,但是当然,元素仍然设置为隐藏并具有相同的文本。因此,当用户再次触发它时,没有任何反应。我已经尝试立即将html()设置为空并显示它,但这会立即发生,所以你永远不会看到文本。我想我可以在打开编辑对话框时将其“重置”,但我确信有人可以通过一种简单的方法解决这个问题。

4 个答案:

答案 0 :(得分:6)

.show()之前使用.fadeOut()

window.parent.$(".Toast").html('Successfully Did Something!').show().fadeOut(9000);

要取消当前动画,请使用.stop(true, true)

window.parent.$(".Toast").html('Successfully Did Something!').stop(true, true).show().fadeOut(9000);

答案 1 :(得分:2)

有一个回调函数可以作为参数添加到fadeOut。一旦动画完成,它将被调用。在这里查看文档:{​​{3}}

所以,试试这个:

window.parent.$(".Toast").html('Successfully Did Something!').fadeOut(9000, function(){
    window.parent.$(".Toast").html('')
});

答案 2 :(得分:0)

更改html后,您只需要显示元素:

window.parent.$(".Toast").html('Successfully Did Something!').show().fadeOut(9000);

但是,我认为延迟会产生你正在寻找的效果:

window.parent.$(".Toast").html('Successfully Did Something!').fadeIn().delay(9000).fadeOut();

答案 3 :(得分:0)

如果您正在处理iframe,可以尝试以下代码吗?它应该解决你的问题。

window.top.$(".Toast").html('Successfully Did Something!').fadeOut(9000, function(){
    $(this).html('').css("opacity", 1).hide();
});