दुर्भाग्य से, हाँ - यह केवल कुछ सीएसएस के साथ संभव नहीं है। जैसा कि this question पर उत्तरों और टिप्पणियों में उल्लिखित है, वर्तमान में पैरेंट तत्व को बच्चों पर आधारित स्टाइल प्राप्त करने का कोई तरीका नहीं है।
आपको क्या चाहते हो करने के लिए, आप अनिवार्य रूप से पता लगाने के लिए जो बच्चों (<option>
) का चयन किया जाता है के लिए होता है, और उसके बाद माता-पिता शैली के हिसाब से।
हालांकि, आप इस एक बहुत ही सरल jQuery कॉल के साथ पूरा कर सकते हैं, इस प्रकार है:
एचटीएमएल
<select>
<option value="foo">Foo!</option>
<option value="bar">Bar!</option>
</select>
jQuery
var $select = $('select');
$select.each(function() {
$(this).addClass($(this).children(':selected').val());
}).on('change', function(ev) {
$(this).attr('class', '').addClass($(this).children(':selected').val());
});
सीएसएस
select, option { background: #fff; }
select.foo, option[value="foo"] { background: red; }
select.bar, option[value="bar"] { background: green; }
यहां एक working jsFiddle है।
चयनकर्ताओं के भविष्य के बारे में प्रश्न पर वापस जाएं। हां - "विषय" चयनकर्ताओं का उद्देश्य आप जो भी उल्लेख करते हैं, वही करना है। जब वे कभी वास्तव में आधुनिक ब्राउज़रों में लाइव जाते हैं, आप के लिए ऊपर दिए गए कोड अनुकूलन कर सकता है /:
select { background: #fff; }
!select > option[value="foo"]:checked { background: red; }
!select > option[value="bar"]:checked { background: green; }
अतिरिक्त नोट के रूप में, वहाँ अभी भी है कि क्या !
से पहले या विषय के बाद जाना चाहिए बहस चल रही है। यह !something
के प्रोग्रामिंग मानक पर आधारित है जिसका अर्थ है "कुछ नहीं"। नतीजतन, विषय आधारित सीएसएस वास्तव में इस के बजाय की तरह लग रही हवा दे सकता है:
select { background: #fff; }
select! > option[value="foo"]:checked { background: red; }
select! > option[value="bar"]:checked { background: green; }
मैं आपके चुने हुए चांदनी पर विवाद कर सकता हूं, ट्यूनेड रहूंगा। यह बहुत "हैकी" – Justin
@ जस्टिन है - यदि बेहतर है तो मैं स्वीकार किए गए उत्तर को बदल दूंगा। लेकिन इस समय मेरे लिए यह काफी अच्छा है। – Aprillion
मेरे anwser को देखें और मुझे बताएं कि क्या यह वास्तव में आपके प्रश्न को लॉन्च करता है। – Justin