私はこのコードで立ち往生しています:
reload: function() {
var self = this;
$.when(self.unload()).then(function() {
self.load();
});
},
load: function() {
var self = this;
$.ajax({
url: self.options.url,
success: function(data) {
$.Deferred(
function(dfr) {
$.each(data, function() {
var div = $('<div></div>')
.addClass('nw-item')
.html('newsitem.ejs', this)
.hide()
.appendTo(self.element);
dfr = dfr.pipe(function() {
return div.slideDown(self.options.speed);
});
});
}).resolve();
}
})
},
unload: function() {
var items = this.element.children('.nw-item').reverse(),
self = this,
udfd = $.Deferred(
function(dfr) {
$.each(items, function() {
var div = $(this);
dfr = dfr.pipe(function() {
return div.slideUp(self.options.speed);
});
});
}).resolve();
return udfd;
}
「リロード」では、「アンロード」シーケンスが完了した後に「ロード」シーケンスを開始する必要がありますが、「アンロード」シーケンス要素の最初の反復が非表示になった直後に開始されます。助けてください、私は立ち往生しています(