我有這個這個jQuery加載在一個模式成功的消息:調用一些jQuery的.load後3秒()
$('#menu_access').load(
site_url + sUrl,
function() {
$(this).dolPopup(oPopupOptions);
}
);
我要調用此函數加載三秒之後:
$('#menu_access').dolPopupHide({});
我不知道如何去做。我不太熟悉.load()函數。
我有這個這個jQuery加載在一個模式成功的消息:調用一些jQuery的.load後3秒()
$('#menu_access').load(
site_url + sUrl,
function() {
$(this).dolPopup(oPopupOptions);
}
);
我要調用此函數加載三秒之後:
$('#menu_access').dolPopupHide({});
我不知道如何去做。我不太熟悉.load()函數。
使用setTimeout(...)
$('#menu_access').load(
site_url + sUrl,
function() {
var menuAccess = $(this);
menuAccess.dolPopup(oPopupOptions);
setTimeout(function() {
menuAccess.dolPopupHide({});
}, 3000);
}
);
hmm ...由於某種原因不工作這是從函數內調用 – tmartin314 2010-10-04 01:39:54
'this'不是在這裏傳遞給'setTimeout()'的函數內部的適當元素 – 2010-10-04 01:49:52
@Nick你說得對。我不知道我是怎麼錯過的,我修好了。謝謝! – 2010-10-04 01:55:41
使用.delay()
函數。
電話您可以使用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);
}
);
我在哪裏添加$(this).dolPopupHide({});? – tmartin314 2010-10-04 01:42:48
@what - 對不起,我應該在'.dolPopup(oPopupOptions)'的位置。我會糾正的。 – user113716 2010-10-04 01:45:09
+1 - 完整和正確,好奇其他答案如何得到+3,一個人的低效和一個人的錯誤....'setTimeout()'是*絕對*的方式去這裏。 – 2010-10-04 01:53:41
.load()是出了名(和設備特別是)不可靠,保證整個DOM被加載(從而使你'#node'),而不是:'$(函數(){/ *你的東西在這裏} - 許多人在完成圖像加載時嘗試使用.load()(這不包含在'DOM-loaded'中),並且會受到很多痛苦,例如,如果已經緩存了no load()事件... ) – 2015-11-06 10:26:12