मान लीजिए मैं निम्न HTML है:तत्व का चयन करें, जब तक कि यह सिर्फ एक चयनकर्ता का उपयोग करके किसी वर्ग के एक पूर्वज है
<div class="foo">
<ul>
<li>One</li>
<li>Two</li>
</ul>
</div> <!-- not originally here -->
<div class="bar">
<ul>
<li>Three</li>
<li>Four</li>
</ul>
</div>
मैं सभी li
तत्वों कि वर्ग के साथ एक तत्व की सन्तान नहीं हैं का चयन करना चाहते foo
। मुझे पता है कि मैं इसे एक फैंसी filter function के साथ कर सकता हूं, लेकिन मुझे आश्चर्य है कि मैं इसे सिर्फ एक चयनकर्ता के साथ कर सकता हूं। सबसे पहले मैंने कोशिश की:
$(":not(.foo) li")
दुर्भाग्य से इस के बाद से li
शैली (इस मामले में ul
) के बिना अन्य पूर्वजों है काम नहीं करता। निम्नलिखित काम करने लगता है;
$(":not(.foo) :not(.foo) li")
दूसरे शब्दों में, सभी li
तत्वों कोई पूर्वज है कि या तो वर्ग foo
है या वर्ग foo
के साथ अपने स्वयं के एक पूर्वज है है का चयन करें। शायद यह चयनकर्ता के साथ ऐसा करने का सबसे अच्छा/एकमात्र तरीका है, लेकिन मैं :not
चयनकर्ता की पुनरावृत्ति के बारे में रोमांचित नहीं हूं। वहाँ कोई बेहतर विचार है?
समस्या है कि यहाँ 'है।इसका अर्थ है "ली 'जिसका पूर्वजों का वर्ग है जिसमें वर्ग' foo' 'नहीं है। अंतर सूक्ष्म लगता है, लेकिन यह वास्तव में एक बहुत बड़ा अंतर है। – BoltClock
हाँ बिल्कुल। और दूसरा मतलब है 'ली' जिसका पूर्वज है जिसके पास कक्षा 'foo' नहीं है और उसके पास वर्ग' foo' के साथ अपने पूर्वजों का पूर्वज नहीं है। जो मुझे लगता है वह सही परिणाम है, लेकिन वहां पहुंचने के लिए एक बहुत बदसूरत और असंतुष्ट तरीका है। –