अगर किसी तत्व में विशिष्ट वर्ग नहीं है, तो कैसे जांचें?


232

यदि कोई वर्ग नहीं है तो मैं कैसे जांच करूं? उदाहरण के लिए, मुझे पता है कि यह देखने के लिए कैसे जांच करें कि क्या यह "परीक्षण" वर्ग है, लेकिन मैं यह देखने के लिए कैसे जांचूं कि क्या यह कक्षा "परीक्षण" नहीं है?

if($(this).hasClass("test")){
}

जवाबों:


484
if (!$(this).hasClass("test")) {

34
TIMTOWTDI नस में, यहाँ एक भयानक समाधान है: if($(this).is(":not(.test)"))> :)
Phrogz

6
TIMTOWTDIBSCINABTE
Fizzix

25
किसी की सोच के मामले में: ऐसा करने के लिए एक से अधिक तरीके हैं, लेकिन कभी-कभी सुसंगतता एक बुरी बात भी नहीं है।
कप्तान हाइपरटेक्स्ट

145

sdleihssirhc का उत्तर निश्चित रूप से प्रश्न में मामले के लिए सही है, लेकिन सिर्फ एक संदर्भ के रूप में यदि आपको उन तत्वों का चयन करने की आवश्यकता है जिनके पास एक निश्चित वर्ग नहीं है, तो आप चयनकर्ता का उपयोग नहीं कर सकते हैं :

// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' );  // <-- alternative 

8
IMHO आपका उत्तर सबसे अच्छा है। यदि sdleihssirhc का उत्तर सही है, तो इस प्रश्न का jQuery से कोई लेना-देना नहीं है और इसे बेहतर रूप दिया जाएगा जैसे कि 'कुछ शर्त दी गई है, मैं कैसे परीक्षण करूं कि यह स्थिति जावास्क्रिप्ट में सही नहीं है'। हम jQuery के साथ क्या चाहते हैं, डोम तत्वों के पूरे संग्रह पर संचालित होता है जितना कि हम एकल वस्तुओं पर आसान कर सकते हैं। आपका जवाब सिर्फ यही समाधान प्रदान करता है। +1
Stijn de Witt

1
@byronyasgur मूल प्रश्न के संदर्भ में पोस्टर परीक्षण करना चाहता था यदि एक निश्चित ज्ञात तत्व में वर्ग नहीं था। यह कोड उन सभी तत्वों का चयन करता है जिनके पास कक्षा नहीं है, इसलिए यह पोस्टर की समस्या को हल नहीं करेगा। मुझे याद नहीं है कि मैंने इसे पहले स्थान पर क्यों पोस्ट किया था।
जेजे

14

कक्षा "एबीसी" वाले तत्व (या तत्वों के समूह) का चयन करें, कक्षा "एक्सज़" न होने पर:

    $('.abc:not(".xyz")')

नियमित सीएसएस का चयन करते समय आप उपयोग कर सकते हैं .abc:not(.xyz)


6

.not () विधि का उपयोग करें और एक विशेषता के लिए जाँच करें:

$('p').not('[class]');

इसे यहां देखें: http://jsfiddle.net/AWb79/


8
यह पूरी तरह से गलत है। ब्रैकेट कक्षाओं के लिए नहीं हैं, बल्कि चयनकर्ताओं के लिए उपयोग किए जाने वाले गुणों की पहचान करते हैं।
मिस्टरपकर

1
वास्तव में यह पूरी तरह से सही है। '[वर्ग]' एक वर्ग होने की विशेषता (नहीं) की सही पहचान कर रहा है।
देबोराह

@ मिस्टरपार्क क्लासेस एट्रिब्यूट हैं।
मैथ्यू Cira

यह जाँचता है कि क्या विशेषता मौजूद है, मामला नहीं है यदि किसी तत्व का एक विशिष्ट वर्ग है, जैसा कि वर्ग मान में है
Mark

6

आप यह कोशिश कर सकते हैं:

<div id="div1" class="myClass">there is a class</div>
<div id="div2"> there is no class2 </div>

$(document).ready(function(){
    $("#div2").not('.myClass');  // do not have `myClass` class.
});

यह उत्तर पृष्ठ के लिए कोई मूल्य नहीं जोड़ता है, यह 7 साल के ealier पोस्ट किया गया था। कृपया कोड-केवल और डुप्लिकेट सामग्री पोस्ट न करें।
मिकमैकुसा

0

अधिक जटिल परिदृश्य हैं जहां यह काम नहीं करता है। क्या होगा यदि आप क्लास ए के साथ एक तत्व का चयन करना चाहते हैं जिसमें क्लास बी के तत्व शामिल नहीं हैं। आपको अंत में कुछ और चाहिए जैसे:

यदि मूल तत्व में कुछ बाल तत्व नहीं होते हैं; jQuery


0

इस 6yrs के माध्यम से बाद में पढ़ना और सोचा कि मैं भी इस पर एक हैक ले जाऊंगा , TIMTOWTDI नस में ...: D, उम्मीद है कि यह गलत नहीं है 'JS etiquette'।

मैं आमतौर पर इस स्थिति के साथ एक var सेट करता हूं और फिर बाद में इसे संदर्भित करता हूं..हे;

// var set up globally OR locally depending on your requirements
var hC;

function(el) {
  var $this = el;
  hC = $this.hasClass("test");

  // use the variable in the conditional statement
  if (!hC) {
    //
  }
}

हालांकि मुझे यह उल्लेख करना चाहिए कि मैं ऐसा करता हूं क्योंकि मैं मुख्य रूप से सशर्त टर्नरी ऑपरेटर का उपयोग करता हूं और स्वच्छ कोड चाहता हूं। तो इस मामले में, मेरे पास यह सब है:

hC ? '' : foo(x, n) ;
   // OR -----------
!hC ? foo(x, n) : '' ;

...इसके अलावा:

$this.hasClass("test") ? '' : foo(x, n) ;
   // OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;

0

मुझे पता नहीं क्यों, लेकिन स्वीकृत जवाब मेरे काम नहीं आया। इसके बजाय यह काम किया:

if ($(this).hasClass("test") !== false) {}

यह वास्तव में जाँच करता है कि क्या यह कक्षा "परीक्षण" है। यह जाँचने के लिए कि क्या यह "परीक्षण" नहीं है, आपको "=== झूठी" के बजाय "=== असत्य", या "! == सत्य" की आवश्यकता होगी।
लिसा सेरिली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.