मैं उन सभी तत्वों का चयन करना चाहता हूं जिनमें दो वर्ग हैं a
और b
।
<element class="a b">
तो, केवल उन तत्वों को जिनके पास दोनों वर्ग हैं।
जब मैं इसका उपयोग $(".a, .b")
करता हूं तो यह मुझे मिल जाता है, लेकिन मैं अंतर्यात्रा चाहता हूं।
मैं उन सभी तत्वों का चयन करना चाहता हूं जिनमें दो वर्ग हैं a
और b
।
<element class="a b">
तो, केवल उन तत्वों को जिनके पास दोनों वर्ग हैं।
जब मैं इसका उपयोग $(".a, .b")
करता हूं तो यह मुझे मिल जाता है, लेकिन मैं अंतर्यात्रा चाहता हूं।
जवाबों:
यदि आप दोनों वर्गों (एक प्रतिच्छेदन, जैसे तार्किक और) के साथ केवल तत्वों का मिलान करना चाहते हैं , तो चयनकर्ताओं को बिना रिक्त स्थान के एक साथ लिखें :
$('.a.b')
आदेश प्रासंगिक नहीं है, इसलिए आप कक्षाओं को स्वैप भी कर सकते हैं:
$('.b.a')
तो ऐसे div
तत्व का मिलान करने के लिए a
जिसमें कक्षाओं के साथ एक आईडी है b
और c
, आप लिखेंगे:
$('div#a.b.c')
(व्यवहार में, आपको सबसे अधिक संभावना है कि विशिष्ट प्राप्त करने की आवश्यकता नहीं है, और एक आईडी या कक्षा चयनकर्ता आमतौर पर पर्याप्त है $('#a')
)।
b
और c
गतिशील रूप से जोड़ रहे हैं, और आप केवल अगर यह उन वर्गों है तत्व का चयन करना चाहते हैं।
.a .b
कक्षा वाले तत्वों की खोज करता है जो वर्ग के साथ b
एक तत्व के वंशज हैं a
। तो कुछ ऐसा div a
होगा जो केवल उन a
तत्वों को वापस करेगा जो एक तत्व के अंदर हैं div
।
आप filter()
फ़ंक्शन का उपयोग करके ऐसा कर सकते हैं :
$(".a").filter(".b")
.a
और कई बार आधारित विभिन्न मनमानी वर्गों को फ़िल्टर करने की आवश्यकता है जो मूल .a
सेट से संबंधित हैं ।
मामले के लिए
<element class="a">
<element class="b c">
</element>
</element>
आपको बीच .a
- बीच में जगह डालनी होगी.b.c
$('.a .b.c')
$('.a .c.b')
भी काम करेगा?
$('.a > element')
आपके पास जो समस्या है, वह यह है कि आप एक का उपयोग कर रहे हैं Group Selector
, जबकि आपको एक का उपयोग करना चाहिए Multiples selector
! अधिक विशिष्ट होने के लिए, आप का उपयोग करते समय $('.a, .b')
आपको उपयोग करना चाहिए $('.a.b')
।
अधिक जानकारी के लिए, चयनकर्ताओं को यहां जोड़ने के लिए विभिन्न तरीकों का अवलोकन देखें!
सभी <h1>
तत्वों और सभी <p>
तत्वों और सभी <a>
तत्वों का चयन करें :
$('h1, p, a')
कक्षाओं के साथ सभी <input>
तत्वों का चयन करें और :type
text
code
red
$('input[type="text"].code.red')
<i>
तत्वों के अंदर सभी तत्वों का चयन करें <p>
:
$('p i')
उन सभी <ul>
तत्वों का चयन करें जो किसी <li>
तत्व के तत्काल बच्चे हैं :
$('li > ul')
उन सभी <a>
तत्वों का चयन करें जिन्हें <h2>
तत्वों के तुरंत बाद रखा गया है:
$('h2 + a')
उन सभी <span>
तत्वों का चयन करें जो तत्वों के भाई-बहन <div>
हैं:
$('div ~ span')
$('.a .b , .a .c').css('border', '2px solid yellow');
//selects b and c
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="a">a
<div class="b">b</div>
<div class="c">c</div>
<div class="d">d</div>
</div>
वेनिला जावास्क्रिप्ट समाधान: -
document.querySelectorAll('.a.b')
समूह चयनकर्ता
body {font-size: 12px; }
body {font-family: arial, helvetica, sans-serif;}
th {font-size: 12px; font-family: arial, helvetica, sans-serif;}
td {font-size: 12px; font-family: arial, helvetica, sans-serif;}
यह बन जाता है:
body, th, td {font-size: 12px; font-family: arial, helvetica, sans-serif;}
तो आपके मामले में आपने समूह चयनकर्ता की कोशिश की है, जबकि इसका एक चौराहा है
$(".a, .b")
इसके बजाय इसका उपयोग करें
$(".a.b")
आप getElementsByClassName()
जो चाहते हैं उसके लिए विधि का उपयोग कर सकते हैं।
var elems = document.getElementsByClassName("a b c");
elems[0].style.color = "green";
console.log(elems[0]);
<ul>
<li class="a">a</li>
<li class="a b">a, b</li>
<li class="a b c">a, b, c</li>
</ul>
यह सबसे तेज उपाय भी है। आप यहाँ उस बारे में एक बेंचमार्क देख सकते हैं ।