2013-01-12 54 views
0

我實際上是在研究一個jQuery UI手風琴,我試圖找到如何知道面板何時打開或關閉,以便我可以執行另一個功能這兩個事件。jQuery UI,在accordionactivate上確定面板是否打開或關閉

$("#accordion").bind('accordionactivate', function(event, ui) { 
    $(ui.newPanel).find('.itemChildren').empty(); 
    var index = $("#accordion").accordion("option", "active"); 
    alert($.isEmptyObject(ui.oldPanel)); 
    if(index !== false){ 
    var item = {}; 
    item[Settings.id_item] = Tree.getTreeItemId(ui.newPanel); 
    Tree.displayChildren(item, Settings, Url); 
    } 
}); 

我試着看,如果對象爲空:沒有

我想看看如果活動指數爲假:只有當假的最後一個面板關閉

感謝您的幫助!

回答

1

這可能不是做的最好的方式,但它爲我工作,我只是驗證是否從newPanel類存在:

$("#accordion").bind('accordionactivate', function(event, ui) { 
    if(typeof $(ui.newPanel).attr('class') === 'undefined'){ 
    $(ui.oldPanel).find('.itemChildren').empty(); 
    } else { 
    var item = {}; 
    item[Settings.id_item] = Tree.getTreeItemId(ui.newPanel); 
    Tree.displayChildren(item, Settings, Url); 
    } 
}); 
1

我知道這個問題是舊的,但我碰到它今天。從手風琴文檔here

如果手風琴當前摺疊,ui.oldHeader和ui.oldPanel 將是空的jQuery對象。如果手風琴正在崩潰,則ui.newHeader和ui.newPanel將爲空的jQuery對象 。

因此,如果ui.newHeader不爲空,那麼手風琴即將開啓。或者,如果ui.oldHeader不爲空,那麼手風琴即將崩潰。下面的代碼適用於我:

$("#accordion").on("accordionbeforeactivate", function(event, ui) { 
    if (ui.newHeader.size()) { 
     console.log("Activating"); 
    } else if (ui.oldHeader.size()) { 
     console.log("Deactivating"); 
    } 
}); 
相關問題