2011-11-25 18 views
32

मैं एक उल-सूची में कक्षा (वर्ग = "bbox") जोड़ना चाहता हूं लेकिन केवल तभी कोई वर्ग मौजूद नहीं है। यह वही है जो मैंने अभी तक किया है। यदि उल-टैग में कोई वर्ग मौजूद है तो मैं jquery के साथ कैसे जांच करूं?jquery के माध्यम से कक्षा जोड़ें, लेकिन केवल तब मौजूद नहीं है जब

$("ul").addClass("bbox"); 
+10

अगर वर्ग की जांच की कोई जरूरत नहीं है पहले ही जोड़ा जा चुका है; '.addClass' आंतरिक रूप से' .hasClass' जांच करेगा। देखें: http://stackoverflow.com/questions/13358887 –

उत्तर

34

आप जाँच करना चाहते हैं, तो एक विशिष्ट वर्ग तो मौजूद है:

if(!$("ul").hasClass("class-name")){ 
    $("ul").addClass("bbox"); 
} 

आप जाँच करना चाहते हैं, तो किसी भी वर्ग मौजूद है:

if ($('ul').attr('class') == '') { 
    $("ul").addClass("bbox"); 
} 
+0

मैंने # सामग्री के भीतर पहला उल चुनने का प्रयास किया लेकिन यह सभी का चयन करता है। गलत क्या है? अगर ($ ('# सामग्री उल: nth-child (1)') हैस्कास ("bbox") == झूठा) { $ ("उल")। addClass ("bbox"); } – mark

+2

'हैस्क्लास() 'पहले से ही सत्य या गलत लौटाता है, इसलिए गलत होने के बराबर चेक अनावश्यक है। 'if (! $ ('ul')। हैस्क्लास ('classname')) ' – Andy

+0

@ एंडी ट्रू पर्याप्त होगा, उत्तर संशोधित होगा। –

3
concisely

:

// fine, because nothing happens if 
// there are no matching elements 
$("ul[class='']").addClass("bbox"); 
+0

के साथ जोड़ने से पहले कक्षा के लिए जांच करता है अच्छा और छोटा! – lucapette

+0

क्लास एबॉक्स होने पर काम नहीं करेगा और आप बॉक्स को जोड़ने का प्रयास कर रहे हैं। मैट का समाधान इस समस्या को हल करता है। –

16

karim79 आपको लगभग मिल गया!

मुझे सही कर आप

$("ul:not([class*='bbox'])").addClass("bbox"); 

आपकी कोई कक्षा पूर्ण के साथ टैग से मिलान करते हैं, और अगर उल अन्य वर्गों था मिलान नहीं किया जाएगा। आपको उस सटीक वर्ग की खोज करनी है जिसे आप जोड़ना चाहते हैं। .hasClass aproach की तरह।

आशा है कि यह मदद करता है

+2

यदि मुझे गलत नहीं है, तो आप विशेषता चयनकर्ता के चारों ओर ब्रैकेट भूल गए हैं।इसके अलावा, '$ (" उल: नहीं ([वर्ग ~ = 'bbox']) ")। AddClass (" bbox "); 'बेहतर होगा (tilde)। JQuery दस्तावेज़ों से – Bart

11

मैं सोच रहा था इस ठीक काम करेगा ->

$("ul").removeClass("bbox").addClass("bbox");

सबसे पहले यह हटाएगा यदि कोई है और फिर नया जोड़ें। मेरे लिए सबसे अच्छा काम किया क्योंकि मैं if चीज़ टाइप करने के लिए बहुत आलसी हूं।

3

आप अगर मौजूद नहीं है केवल जब

$('.your-dom:not(.class-name)').addClass('class-name'); 
8

बस $('.selector').addClass("myClass"); का उपयोग वर्ग को जोड़ने के लिए इस कोड का उपयोग कर सकते हैं।

jQuery वर्गों को आंतरिक रूप से डुप्लिकेट के लिए चेक करें/हटाएं, जिसका अर्थ यह है कि addClass पर कॉल करने से दो बार केवल कक्षा को जोड़ दिया जाएगा।

+0

: https://api.jquery.com/addclass/ यह ध्यान रखना महत्वपूर्ण है कि यह विधि कक्षा को प्रतिस्थापित नहीं करती है। यह कक्षा को जोड़ता है, इसे किसी भी रूप में जोड़ता है जो पहले से ही तत्वों को सौंपा जा सकता है। – vanduc1102

0

मैं 2 के बीच वर्गों टॉगल कर रहा हूँ अगर मैं इस विधि

if (foo) 
    $('button.btn-foo').removeClass('foo bar').addClass('foo'); 
if (bar) 
    $('button.btn-foo').removeClass('foo bar').addClass('bar'); 

का उपयोग तो मैं बटन की वर्तमान सेटिंग की जाँच की जरूरत नहीं है

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