在.load()之后3秒调用一些jquery

时间:2010-10-04 01:29:08

标签: jquery

我有这个jquery在模式中加载成功消息:

$('#menu_access').load(
    site_url + sUrl,
    function() {
        $(this).dolPopup(oPopupOptions);
    }
);

我想在加载后三秒钟调用此函数:

$('#menu_access').dolPopupHide({});

我不确定该怎么做。我不太熟悉.load()函数。

3 个答案:

答案 0 :(得分:8)

您可以使用jQuery's delay() method,但需要使用jQuery's .queue() method将插件调用添加到队列中。

$('#menu_access').load(
    site_url + sUrl,
    function() {
        $(this).dolPopup(oPopupOptions);
        $(this).delay(3000)
               .queue( function( nxt ) {
                      $(this).dolPopupHide({});
                      nxt();
                });
    }
);

请注意,需要调用传递给.queue()的函数的参数,以便允许下一个动画发生(在任何时候)。

作为替代方案,您可以使用setTimeout(),但您需要确保回调中this的值正确。

$('#menu_access').load(
    site_url + sUrl,
    function() {
        $(this).dolPopup(oPopupOptions);
        var that = this;
        setTimeout(function() {
                      $(that).dolPopupHide({});
                }, 3000);
    }
);

此处this由变量that引用。

或者您可以使用jQuery's $.proxy() method来确保this的正确含义。

$('#menu_access').load(
    site_url + sUrl,
    function() {
        $(this).dolPopup(oPopupOptions);
        setTimeout($.proxy(function() {
                      $(this).dolPopupHide({});
                }, this), 3000);
    }
);

答案 1 :(得分:5)

致电setTimeout(...)

$('#menu_access').load(
    site_url + sUrl,
    function() {
        var menuAccess = $(this);
        menuAccess.dolPopup(oPopupOptions);
        setTimeout(function () {
            menuAccess.dolPopupHide({});
        }, 3000);
    }
);

答案 2 :(得分:3)

使用.delay()功能。