2010-02-10 65 views
11

我在網頁上有一個基於jQuery Accordion的簡單菜單。我有點簡化了代碼,它看起來像這樣;jQuery Accordion - 需要當前選定內容部分的索引

<div id="menu_div" class="nt-tab-outer nt-width-150px"> 

<h3 class="nt-tab-title"><a href="#">Menu A</a></h3> 
<div id="menu_1_div"> 
    <a href="itemA1">Item A1</a><br /> 
    <a href="itemA2">Item A2</a><br /> 
</div> 

<h3 class="nt-tab-title"><a href="#">Menu B</a></h3> 
<div id="menu_2_div"> 
    <a href="fTabsDyn">Item B1</a><br /> 
    <a href="fPlainDyn">Item B2</a><br /> 
</div> 

</div> 

<script type="text/javascript"> 
jQuery(function() { 
jQuery("#menu_div").accordion({ 
    active: 1, 
    change: function(event, ui) { 
     alert('bob'); 
    }}) 
}); 

</script> 

這設置手風琴的第二個「部分」在頁面打開時打開。 (active:1),如果單擊任何一個頭部,會彈出一個簡單的警報「bob」。到現在爲止還挺好。

現在我想用header的索引替換「bob」。所以「閱讀」版本的「積極」。即當第一個手風琴頭被點擊時,我得到0,如果第二個頭被點擊,我得到一個1.

(除此之外,當然,我並不真的想做一個警報,我想做一個Ajax使用該值調用服務器,這樣服務器就知道客戶端打開了哪個菜單,但我可以做到這一點,但我正在努力獲得正確的值,如果索引不可用,隨時可以提供備用建議)。

謝謝!

回答

18

布魯斯的谷歌法 - 無論多久你爲之奮鬥,在發佈你的問題1分鐘後Google終究會提供答案。

function(event, ui) { 
    var index = jQuery(this).find("h3").index(ui.newHeader[0]); 
    alert('bob ' + index); 
    }})}); 

噢,也許這會幫助其他人在路上。

22

從可用的jQuery UI的文檔JQuery UI web site

//getter 
var active = $('.selector').accordion('option', 'active'); 

或在您的情況

var active = jQuery("#menu_div").accordion('option', 'active'); 
+0

嗨拉撒路 - 是的,這就是我的想法,但它總是返回1. – Bruce 2010-02-10 12:28:47

+0

@拉扎魯斯:謝謝。這就是我在找的東西,「var active = jQuery(」#menu_div「)。accordion('option','active');」通過jQuery - v3.2.1和jQuery UI - v1.12.1爲我工作。 – Indrabhushan 2017-05-29 05:54:27

7

您可以通過使用

ui.options.active 
+0

這是一個寶石... – 2011-06-22 18:46:02

+1

ui.options目前已棄用(jQuery UI 1.10) – 2013-12-10 19:01:38

0
activate: function(event, ui) 
獲取活動指數

請使用acti vate方法而不是改變。 它適用於我。

0

試試這個:需要手風琴的名字這就是我所做的。應該爲上面的html工作。希望能幫助到你。更好的解決方案是給手風琴的標題一個id並直接獲取它。

$("#accordion1").accordion({ 
     heightStyle: "fill", 
     activate: function(event, ui) { 
      var name = ui.newHeader[0].childNodes[1].innerHTML; 
      console.log(name); 
     } 
    });