我有一個jQuery的聲明如下:執行回調即使jQuery的語句失敗
$('.panel.col2, .panel.col3').fadeOut('fast', function(){
//SOME CODE
});
的問題是,這些元素並不總是存在的,我需要,無論是執行的成功回調回調所屬的聲明。有沒有解決這個問題的方法?
我有一個jQuery的聲明如下:執行回調即使jQuery的語句失敗
$('.panel.col2, .panel.col3').fadeOut('fast', function(){
//SOME CODE
});
的問題是,這些元素並不總是存在的,我需要,無論是執行的成功回調回調所屬的聲明。有沒有解決這個問題的方法?
嘗試這樣:
function myCallback(){
//SOME CODE
}
if($('.panel.col2, .panel.col3').length>0){
$('.panel.col2, .panel.col3').fadeOut('fast', function(){
myCallback();
});
} else {
myCallback();
}
這是一個更有組織。這就是爲什麼我選擇它作爲anaswer。 – nkcmr
@sightofnick ...這實際上效率較低,因爲在相同的代碼塊中多次使用相同的jQuery選擇器會導致額外的循環。簡單地將jQuery對象存儲在變量中然後使用變量會更有效率。例如:var mypanelelement = $('。panel.col2,.panel.col3');現在您可以使用變量mypanelelement而不是強制jQuery再次搜索元素。 –
@John Hartsock:當然你是對的,但我也發現代碼中存在弱點 - 只有在文檔被加載時才定義函數,而且這個代碼可以在更早的時候加載。當然取決於函數內部的代碼的可擴展性。無論如何,這是表演踢。附:是的,我應該把所有其他文件包裝在文件中。我知道 :)。 – avall
這聽起來像你想要一些代碼運行在回調fadeOut
和外面,如果他們沒有淡出的要素。這是一個想法,但我不知道你想要做什麼的背景。
$(document).ready (function() {
var panelElement = $('.panel.col2, .panel.col3');
var fadeOutCallBack = function(){
//SOME CODE
};
panelElement.fadeOut('fast', fadeOutCallBack);
if (panelElement.length == 0) {
fadeOutCallBack();
}
});
聽起來這是不是一個真正的回調呢? –
重點在於它需要在刪除元素後始終執行。 – nkcmr