2012-05-16 34 views
1

我有一個jQuery的手風琴定義如下:如何保持禁用jQuery手風琴,但仍然改變其活動狀態?

$("#acrd").accordion({ 
    autoHeight: false, 
    header: '.navhead', 
    alwaysOpen: true, 
    navigation: true, 
    collapsible: true, 
    disabled: true 
}); 

當客戶點擊一個按鈕,我調用一個函數DoSomething(),就像這樣:

function DoSomething(id) { 
    $.ajax({ 
     url: "getapage.php?id="+id, 
     cache: false 
     }).done(function(html) { 
      if(html == 'OK') { 
       $("#acrd").accordion({ active: 1 }); // doesn't work 
      } else { 
       alert("Give an error!"); 
      } 
    }); 
} 

但是,當我按一下按鈕沒有任何反應,我檢查了Firebug,沒有語法錯誤。

我該如何做到這一點? (在此過程中未啓用手風琴,客戶端不能改變手風琴的活動狀態)

回答

2

你可能意味着使用activate方法,激活指定的內容部分:

$("#acrd").accordion("activate", 1); 

但是,不會同時工作手風琴被禁用。所以,你需要把它寫成

$("#acrd").accordion("enable").accordion("activate", 1).accordion("disable"); 
+0

你是正確的它是激活,但仍然沒有效果,如果我使用了錯誤的選項不會是導致語法錯誤 - 我沒有得到那 – Eric

+0

@Erik:是的,沒有語法錯誤。另外,您需要首先啓用手風琴(請參閱編輯)。 – Jon

+0

不,你不會得到語法錯誤,因爲語法仍然是正確的。你會做的是向手風琴發送一個額外的變量,手風琴代碼將忽略這個變量。這就好像你說'松鼠'時想'看那棵樹在樹上'。從技術上講,語法沒有任何問題,但對於誰在傾聽是沒有意義的。 – nealio82

0

使用指定的活動選項初始化手風琴。

$("#acrd").accordion({ active: 2 , others.... }); 

然後嘗試你的代碼...

+0

試過了,沒有效果 – Eric

0

一些像這樣的事情,因爲文件說Get or set the active option, after init.這樣jquery ui active

$("#acrd").accordion("option", "active", 2); 
+0

這也沒有效果。如果手風琴被禁用,jquery可能不允許改變狀態嗎? – Eric