我有这个jquery在模式中加载成功消息:
$('#menu_access').load(
site_url + sUrl,
function() {
$(this).dolPopup(oPopupOptions);
}
);
我想在加载后三秒钟调用此函数:
$('#menu_access').dolPopupHide({});
我不确定该怎么做。我不太熟悉.load()函数。
答案 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()
功能。