2012-01-28 12 views
10

मैं किसी तत्व को चुनने के लिए केवल jQuery का उपयोग कैसे कर सकता हूं यदि उसके पास कोई कक्षा नहीं है?jQuery: केवल एक तत्व का चयन करें जब उसके पास कोई वर्ग नाम नहीं है

मैं एक पृष्ठ लिख रहा हूं जो HTML लेखक को तत्व में कक्षा जोड़कर डिफ़ॉल्ट jQuery क्रिया को ओवरराइड करने की अनुमति देता है। यह किसी भी वर्ग होना चाहिए।

तो मार्कअप हो सकता है:

<ul> 
    <li class="override"></li> 
    <li></li> 
</ul> 

मैं jQuery चाहते हैं केवल दूसरी सूची तत्व का चयन करने, क्योंकि यह एक वर्ग नहीं है।

मैंने .hasClass() पर देखा है, लेकिन ऐसा लगता है कि यह एक विशिष्ट वर्ग नाम की आवश्यकता है।

धन्यवाद!

उत्तर

18

:not() Selector – jQuery API

$('li:not([class])') 
+0

बिल्कुल सही! यह वही था जो मैं चाहता था। –

+0

मुझे मदद करने में खुशी है। यदि आप अपने प्रश्न के लिए सही उत्तर हैं तो आप बाईं ओर टिक बटन पर क्लिक करके मेरा जवाब स्वीकार कर सकते हैं :) –

2

यह बात करना चाहिए: $('li').not('li[class]')

+1

आपकी दूसरी 'li' प्रकार चयनकर्ता अनावश्यक है। –

+0

सच है। और मेरा समाधान अन्य एक्सडी की तुलना में धीमा है। कम से कम मैंने आज कुछ नया सीखा – clime

+0

किसी भी तरह से मुझे लगता है कि एकल चयनकर्ता के साथ: विशेषता नहीं इस से तेज होगी। मैंने कहीं कहीं पढ़ा है: नहीं .not से बहुत तेज़ नहीं था - मुझे लगता है कि .not समाधान को दो बार DOM को पार करने की आवश्यकता है। –

8

यह करना चाहिए:

$('li:not([class]),li[class=""]') 

डेमो: http://jsfiddle.net/aMC5X/

पहले भाग, li:not([class])"not selector" का उपयोग करता है वाई li तत्वों को खोजने के लिए class विशेषता नहीं है।

दूसरा भाग, li[class=""] कोई भी li तत्व है जो विशेषता को खाली स्ट्रिंग पर सेट किया गया है।

+0

दिलचस्प। दूसरा तत्व "नो क्लास" में शामिल करना है जो खाली वर्ग नाम वाले लोगों को सेट करता है? यह शायद एक अच्छा विचार है - आप कभी नहीं जानते। –

+0

ठीक है अगर आप jsfiddle के साथ खेलते हैं तो मैंने देखा है कि दूसरे भाग के साथ क्या होता है और यह तय करता है कि आपको अपनी स्थिति में इसकी आवश्यकता है (मेरी राय में आपको _do_ इसकी आवश्यकता है)। – nnnnnn

1

आप इस का उपयोग कर सकते हैं:

if (!jQuery('li').hasClass('myClass') { 
    do something... 
} 
संबंधित मुद्दे