根據記錄,這不起作用:
(function ($) {
"use strict";
var methods = {
init: function() {
return this.each(function() {
$(this).click(function() {
$(this).myPlugin("close", function() {
$(this).myPlugin("open");
});
});
});
},
open: function() {
return this.each(function() {
console.log("open was called");
$(this).children(":hidden").slideDown("slow");
});
},
close: function (callback) {
return this.each(function() {
console.log("close was called");
$(this).children(":visible").slideUp("slow");
callback.call($(window));
});
}
};
}(jQuery));
上面的代碼清楚地表明,在jQuery的幻燈片動畫的情況下,在調用open方法之前,腳本的執行不會等待close方法完成。這裏的解決方案,我最終決定採用,使用jQuery承諾方法:
(function ($) {
"use strict";
var methods = {
init: function() {
return this.each(function() {
$(this).click(function() {
$(this).myPlugin("toggle");
});
});
},
toggle: function() {
return this.each(function() {
var $openBox = $(this).children(":visible"),
$closedBox = $(this).children(":hidden");
$openBox.slideUp("fast").promise().done(function() {
$closedBox.slideDown("fast");
});
});
}
};
}(jQuery));
感謝您的答覆@Paresh Balar,但我得到的錯誤'遺漏的類型錯誤:無法調用undefined'的方法「呼籲」上在線''callback.call($(window));' – 2012-03-28 05:58:33
嘿檢查這個演示:http://jsfiddle.net/5QZTs/ – 2012-03-28 06:05:11
你基本上是正確的,除了這是處理jQuery的幻燈片動畫。看到我上面的答案。 – 2012-06-21 22:29:49