1
下面的代碼片段按預期工作:Deferred對象混亂
function boxAnimation() {
var dfd = $.Deferred();
$('div').fadeIn('slow', dfd.resolve);
return dfd.promise();
}
$(function() {
boxAnimation().done(
function() { $(this).animate({ 'margin-top': 50 }); },
function() { $(this).animate({ 'margin-left': 150 }); },
function() { $(this).animate({ 'margin-top': 250 }); },
function() { $(this).animate({ 'margin-left': 350 }); }
).fail(function() { alert('failed'); });
});
但是在這一個的遞延對象既不拒絕或解決。
請告訴我,我該怎麼錯在何處。
function boxAnimation() {
var dfd = $.Deferred();
var randomNum = Math.floor(Math.random() * 5);
$('div').fadeIn('slow', function() {
if (randomNum == 1) {
dfd.reject;
}
else {
dfd.resolve;
}
});
return dfd.promise();
}
$(function() {
boxAnimation().done(
function() { $(this).animate({ 'margin-top': 50 }); },
function() { $(this).animate({ 'margin-left': 150 }); },
function() { $(this).animate({ 'margin-top': 250 }); },
function() { $(this).animate({ 'margin-left': 350 }); }
).fail(function() { alert('failed'); });
});
我的身體:
<div id='box' style='width:200px; height:200px; border:solid 1px #222222; display:none; background:#cccccc'></div>
有道理不過,我嘗試過,但是這會導致錯誤(鉻:無法讀取屬性未定義的「默認視圖」)和fbug:a.ownerDocument是不確定的。你是否通過將它們轉換爲功能來實現它? – XGreen
@XGreen:我覺得你的DOM以某種方式參與,但我不知道你的HTML是什麼樣子。看起來你正在使用縮小版本;使用jQuery的unminified版本在調試時會有很多幫助。 – pimvdb
@XGreen:我錯過了什麼。你期望'this'是'div',但它是'Deferred'對象。如果拒絕/解決這個問題,你應該通過'this':http://jsfiddle.net/PrmQR/。 – pimvdb