2010-12-08 8 views
11

मैं एक साथ समूहीकृत विकल्पों के साथ एक बहुआयामी का उपयोग कर रहा हूँ।jQuery में एक बहुविकल्पीय के लिए optgroup कैसे प्राप्त करें?

<select title="Fruits" multiple="multiple" id="fruits" name="fruits[]"> 
    <option selected="selected" label="All" value="">All</option> 
    <optgroup label="" class="fruit"> 
     <option label="apple" value="1">Apple</option> 
     <option label="pear" value="2">Pear</option> 
     <option label="orange" value="3">Orange</option> 
    </optgroup> 
    <optgroup label="" class="berries"> 
     <option label="strawberry" value="4">Strawberry</option> 
     <option label="raspberry" value="5">Raspberry</option> 
     <option label="blueberry" value="6">Blueberry</option> 
    </optgroup> 
</select> 

मैं $(this).find("option:selected").parent().attr("label") जो केवल पहले चयनित विकल्प पर optgroup देता है, जिसका अर्थ है यदि स्ट्राबेरी और नाशपाती दोनों चयन किया गया था, optgroup '.fruit' दोनों खातों पर लौटा दिया जाएगा कोशिश की है।

jQuery का उपयोग करके, मैं प्रत्येक चयनित विकल्प का चयन समूह कैसे प्राप्त करूं?

उत्तर

16

प्रयास करें इस

$(this).find("option:selected").each(function(){ 
    $(this).parent().attr("label"); 
}); 
3

.each()

$(this).find("option:selected").each(function(){ 
    alert($(this).parent().attr("label")); 
}); 
4

साथ प्रयास करें यह एक छोटे से देर से हो सकता है लेकिन मैं सिर्फ इस मुद्दे पर काम कर समाप्त और यह सबसे सुरुचिपूर्ण समाधान मैं पाया है प्रतीत हो रहा है :

$("#fruits option").filter(":selected").parent("optgroup").attr("label"); 

यहां इस विशेष उदाहरण के लिए संशोधित एक पहेली है (इसका उपयोग करना बल्कि लेबल विशेषता से वर्ग विशेषता): http://jsfiddle.net/pNjsj/

आशा है कि मदद करता है किसी को :)

+0

आप एक घटना को पकड़ने और (कर $ (e.target) .filter कर रहे हैं ": चयनित") कुछ कारण के लिए यह काम नहीं करेगा उस स्थिति में, $ (e.target)। ढूँढें (": चयनित") काम करता है। वास्तव में, दोनों मामलों में() काम करता है, इसलिए मैं आपको फिल्टर() के बजाय इसका उपयोग करने की सलाह देता हूं। – Swader

संबंधित मुद्दे