2011-06-08 11 views
7

सीएसएस (किसी भी संस्करण) में, क्या jQuery में :has() चयनकर्ता जैसे कुछ भी करने का कोई अन्य तरीका है?क्या सीएसएस में jQuery की तरह कुछ है: है()?

jQuery(':has(selector)')

विवरण: तत्व है जो कम से कम एक तत्व यह है कि निर्दिष्ट चयनकर्ता मेल खाता हो चुनता है।

http://api.jquery.com/has-selector/

+0

आप() - चयनकर्ता में क्या पूछना चाहते हैं? – mightyplow

+0

क्या यह सिर्फ एक सामान्य बाल चयनकर्ता नहीं है? एक चयनकर्ता में नियम मिलान करने वाले सभी तत्वों पर लागू होंगे। – andyb

+1

@andyb: ': है()' एक सशर्त छद्म वर्ग है, जैसा कि ': नहीं()' के समान है। मिलान किए गए तत्व छद्म वर्ग के चारों ओर चयनकर्ता हैं, ब्रैकेट में नहीं। – BoltClock

उत्तर

6

नहीं, नहीं है। जिस तरह से सीएसएस डिज़ाइन किया गया है, वह उन पूर्वजों को अनुमति नहीं देता है जो पूर्वजों या भाई बहनों से मेल खाते हैं; केवल वंशज ( और >), भाई बहन (~ और +) या विशिष्ट बच्चे (:*-child) सफल रहे। एकमात्र पूर्वजों का चयनकर्ता :root छद्म-वर्ग है जो किसी दस्तावेज़ के मूल तत्व का चयन करता है (HTML पृष्ठों में, स्वाभाविक रूप से यह html होगा)।

यदि आपको उस तत्व को शैलियों को लागू करने की आवश्यकता है जिसे आप :has() से पूछताछ कर रहे हैं, तो आपको उस श्रेणी में सीएसएस क्लास जोड़ने की आवश्यकता है, फिर उस श्रेणी, as suggested by Stargazer712 द्वारा शैली।

CSS फ़ाइल:

.myAwesomeClass { 
    ... 
} 

जे एस फ़ाइल:

+1

चयनकर्ता 4 ड्राफ्ट्स एक विषय चयनकर्ता का उल्लेख करते हैं, हालांकि यह jQuery के ': है()' चयनकर्ता के लिए एक अलग अर्थपूर्ण है, अगर यह इस मामले में भी काम करेगा मानकीकृत और लागू हो जाता है। – BoltClock

5

संख्या सबसे अच्छा तरीका यह है, jQuery का उपयोग करना है

jQuery(':has(selector)').addClass("myAwesomeClass") 

जहां selector जो कुछ भी यह है आप मूल रूप से थे मैच करने की कोशिश कर रहा है।

+2

* सबसे अच्छा * तरीका आपके सीएसएस और मार्कअप को जावास्क्रिप्ट पर भरोसा करने के लिए अनावश्यक बनाने के लिए व्यवस्थित करना होगा, भले ही सीएसएस कभी-कभी दर्द का थोड़ा सा हो। –

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