2010-02-10 6 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> 

यह पृष्ठ खोलने पर accordion के दूसरे "भाग" को सेट करता है। (सक्रिय: 1) और यदि हेडर में से कोई भी एक साधारण अलर्ट "बॉब" पॉप अप करता है तो क्लिक किया जाता है। अब तक सब ठीक है।

अब मैं हेडर की अनुक्रमणिका के साथ "बॉब" को प्रतिस्थापित करना चाहता हूं। तो "सक्रिय" का "पढ़ा" संस्करण। यानी, जब पहला accordion हेडर क्लिक किया जाता है तो मुझे 0 मिलता है, और यदि दूसरा हेडर क्लिक किया जाता है तो मुझे 1.

(इसके अलावा, निश्चित रूप से मैं वास्तव में अलर्ट नहीं करना चाहता, मैं बनाना चाहता हूं अजाक्स सर्वर के साथ सर्वर पर कॉल करता है, इसलिए सर्वर जानता है कि क्लाइंट पर कौन सा मेनू खुला है। वह हिस्सा मैं कर सकता हूं, लेकिन मैं भेजने के लिए सही मूल्य प्राप्त करने के लिए संघर्ष कर रहा हूं। अगर सूचकांक उपलब्ध नहीं है तो बेझिझक वैकल्पिक सुझाव प्रदान करें)।

धन्यवाद!

उत्तर

18

ब्रूस का Google कानून - इससे कोई फ़र्क नहीं पड़ता कि आप कितने समय तक संघर्ष करते हैं, आपके प्रश्न पोस्ट करने के 1 मिनट बाद Google अंततः उत्तर प्रदान करेगा।

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

ओह ठीक है, शायद यह सड़क के नीचे किसी और की मदद करेगा।

22

में के रूप में उपलब्ध jQuery यूआई प्रलेखन से JQuery UI web site:

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

या अपने मामले

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

हाय लाजर - हाँ, मैंने यही सोचा, लेकिन यह हमेशा वापस आता है 1. – Bruce

+0

@ लाज़र: धन्यवाद। यही वह है जिसे मैं ढूंढ रहा था, "var active = jQuery (" # menu_div ")। Accordion ('option', 'active');" jQuery के साथ मेरे लिए काम किया - v3.2.1 और jQuery यूआई - v1.12.1। – Indrabhushan

7

में आप

ui.options.active 
+0

यह एक मणि है ... –

+1

ui.options वर्तमान में बहिष्कृत (jQuery UI 1.10) –

0
activate: function(event, ui) 
का उपयोग करके सक्रिय सूचकांक प्राप्त कर सकते हैं

कृपया एक्टि का उपयोग करें परिवर्तन के बजाय vate विधि। यह मेरे लिए ठीक काम करता है।

0

इसे आजमाएं: accordion के नाम की आवश्यकता है जो मैंने किया है। उपरोक्त एचटीएमएल के लिए काम करना चाहिए। आशा करता हूँ की ये काम करेगा। बेहतर समाधान accordion शीर्षलेख को आईडी देता है और इसे सीधे लाता है।

$("#accordion1").accordion({ 
     heightStyle: "fill", 
     activate: function(event, ui) { 
      var name = ui.newHeader[0].childNodes[1].innerHTML; 
      console.log(name); 
     } 
    }); 
संबंधित मुद्दे