2008-11-04 12 views
172

के साथ एक सीएसएस क्लास है या नहीं, मैं jQuery के साथ काम कर रहा हूं और यह देखने के लिए एक आसान तरीका है कि तत्व के साथ एक विशिष्ट सीएसएस वर्ग है या नहीं।यह निर्धारित करें कि किसी तत्व के पास jQuery

मेरे पास तत्व की आईडी है, और सीएसएस वर्ग जो मैं ढूंढ रहा हूं। मुझे सिर्फ एक कथन में सक्षम होने की आवश्यकता है, तत्व पर उस वर्ग के अस्तित्व के आधार पर तुलना करें।

+0

यदि आप jQuery के बिना ऐसा करना चाहते हैं, [जावास्क्रिप्ट के साथ "हैस्क्लास"? (Http://stackoverflow.com/q/5085567/1529630) – Oriol

उत्तर

238

hasClass विधि का उपयोग करें:

jQueryCollection.hasClass(className); 

या

$(selector).hasClass(className); 

तर्क (जाहिर है) एक स्ट्रिंग वर्ग आप जाँच कर रहे हैं का प्रतिनिधित्व करता है, और यह एक बूलियन रिटर्न (ताकि यह नहीं है अधिकांश jQuery विधियों की तरह चेनिंग समर्थन)।

नोट: आप एक className तर्क यह है कि रिक्त स्थान हैं पार कर लेते हैं, यह संग्रह के तत्वों 'className स्ट्रिंग के खिलाफ सचमुच मिलान किया जाएगा। तो अगर, उदाहरण के लिए, आप एक तत्व है,

<span class="foo bar" /> 

तो यह true वापस आ जाएगी:

$('span').hasClass('foo bar') 

और इन false वापस आ जाएगी:

$('span').hasClass('bar foo') 
$('span').hasClass('foo bar') 
+7

बिल्कुल। यहां प्रलेखन: http://docs.jquery.com/Traversing/hasClass –

+4

मैं असहमत हूं। दस्तावेजों के तहत प्रलेखन का आयोजन किया गया है, लेकिन आप आसानी से सभी विधियों को वर्णानुक्रम भी देख सकते हैं। सबकुछ एक उदाहरण के साथ आता है, और टिप्पणियां अनुभाग आम तौर पर छोड़ दिया गया कुछ भी साफ़ करता है। jQuery में उत्कृष्ट कार्यों और उपयोगिताएं हैं और इन सभी को खोजने के लिए कुछ सीखना पड़ता है। -EDIT- यह समझ में आता है, यह निश्चित रूप से एक लंबा सफर तय करता है। – Trafalmadorian

+1

@ ट्राफल्माडोरियन, मैंने अपनी मूल टिप्पणी हटा दी है क्योंकि स्थिति बदल गई है। मूल रूप से आपने पहले से ही सब कुछ पोस्ट किया था- और मैंने जवाब दिया कि दस्तावेज़ीकरण गुणवत्ता के बारे में मेरी टिप्पणी अब प्रासंगिक नहीं थी लेकिन उनकी पिछली (मीडियाविकि) प्रणाली को संदर्भित किया गया था। फिर आपने अपनी पिछली टिप्पणी हटा दी और -EDIT- के साथ दोहराया। मुझे आशा है कि यह सफाई भविष्य के पाठकों के लिए थोड़ा स्पष्ट और कम भ्रामक है। – eyelidlessness

20
FAQ

से

elem = $("#elemid"); 
if (elem.is (".class")) { 
    // whatever 
} 

या:

elem = $("#elemid"); 
if (elem.hasClass ("class")) { 
    // whatever 
} 
+3

पर भयानक विकी संस्करण से जुड़ी है .is() - "है() jQuery में विधि सही हो जाएगी यदि वर्तमान संग्रह में से कोई भी तत्व मिलान-आधारित संग्रह में से किसी भी तत्व से मेल खाता है "- http://www.bennadel.com/blog/1725-jQuery-s-is-Method- चेक-फॉर-ए-मैचिंग-एलिमेंट्स एचटीएम – zack

11

निषेध के लिए, यदि आप अगर एक तत्व है जानना चाहता हूँ एक वर्ग तो आप बस मार्क के रूप में कर सकते हैं कहा नहीं।

if (!currentPage.parent().hasClass('home')) { do what you want } 
3
jQuery के बिना

:

var hasclass=!!(' '+elem.className+' ').indexOf(' check_class ')+1; 

या:

function hasClass(e,c){ 
    return e&&(e instanceof HTMLElement)&&!!((' '+e.className+' ').indexOf(' '+c+' ')+1); 
} 
/*example of usage*/ 
var has_class_medium=hasClass(document.getElementsByTagName('input')[0],'medium'); 

इस से रास्ता तेजी से होता है jQuery!

+0

आप क्यों करते हैं ... && !! (('' e.classname + '') .indexOf ('' + c + '') +1) ', और न केवल '&&! (' '+ e.classname +' ') .indexOf (' '+ c +' ')'? – Blexy

+1

क्योंकि 'इंडेक्सऑफ' रिटर्न '-1' है, वर्ग मौजूद नहीं है। अगर मैं '!! - 1' करता हूं, तो यह 'सत्य' होगा। चूंकि मैं '!! - 1 + 1' कर रहा हूं, यह गलत होगा। एक बेहतर तरीका होगा ... ... && !! ~ ('' + e.className + '') .indexOf ('' + c + '') ', लेकिन मुझे उस समय याद नहीं आया। –

+0

क्षमा करें, मेरा मतलब था '... && ~ (' 'e.className +' ') .indexOf (' '+ c +' ')' –

0
$('.segment-name').click(function() { 
    if($(this).hasClass('segment-a')){ 
     //class exist 
    } 
}); 
0

मेरे मामले में, मैं प्रयोग किया जाता है एक jQuery समारोह, मैं कहा, मैं इन के बीच में एक विशिष्ट वर्ग के लिए देख रहा था अलग सीएसएस वर्गों के साथ एक HTML तत्व था 'है', तो मैं इस्तेमाल किया " "एचटीएमएल तत्व में गतिशील रूप से जोड़े गए वर्ग की जांच करने का एक अच्छा विकल्प है, जिसमें पहले से ही अन्य सीएसएस वर्ग हैं, यह एक और अच्छा विकल्प है।

सरल उदाहरण:

<!--element html--> 
<nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav> 

<!--jQuery "is"--> 
$('#menu').is('.cbp-spmenu-open'); 

उन्नत उदाहरण:

<!--element html--> 
    <nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav> 

    <!--jQuery "is"--> 
    if($('#menu').is('.cbp-spmenu-bottom.cbp-spmenu-open')){ 
     $("#menu").show(); 
    } 
0

किसी को जो यहाँ भूमि, लेकिन वास्तव में ऐसा करने का एक jQuery मुक्त तरीका के लिए देख रहा था की मदद करने के हितों में:

element.classList.contains('your-class-name') 
संबंधित मुद्दे