试图使用jQuery .delay()

时间:2011-06-23 15:45:25

标签: jquery

有人可以让我知道我在这里做错了什么,因为看起来我的.delay无法正常工作:

$(document).ready(function() {

    var imgsrc = "#WORKSPACE_IMAGES#spinner_big.gif";

    $('a#add-node').click(function() {
        $('a#add-node').hide();
        $('#form-loading').show().delay(5000);
        $('#form-loading').hide()
        $('a#add-node').show();
    });
});

我基本上想显示我的表单加载div,等待5秒,然后隐藏它然后显示我的其他添加节点div。

当我按下我的按钮时,注意到似乎发生了,它只显示我原来的添加节点div按钮。

任何想法。

感谢。

1 个答案:

答案 0 :(得分:3)

而不是

   $('#form-loading').show().delay(5000);
   $('#form-loading').hide();

你应该做

   $('#form-loading').show().delay(5000).hide();

取自文件:

  

.delay()方法最适合   在排队的jQuery之间延迟   的效果。

无论如何,如果没有任何反应,似乎你的事件没有正确附加。将标记发布到或小提琴,以便我们可以提供帮助

编辑 - 我更好地阅读了文档:

  

在版本1.4中添加到jQuery中   .delay()方法允许我们延迟   执行跟随它的功能   在队列中。它可以用于   标准效果队列或用   自定义队列。只有后续事件   在队列中延迟;例如   这不会延迟无论证   做.show()或.hide()的形式   不要使用效果队列。

所以你不能使用show()和hide();您必须使用setTimeout()我猜:

$('a#add-node').click(function() {
    $('a#add-node').hide();
    $('#form-loading').show();
    setTimeout(restoreVisibility, 5000);
});

var restoreVisibility = function(){
    $('#form-loading').hide();
    $('a#add-node').show();
}

小提琴:http://jsfiddle.net/qUD7U/1/