2012-01-05 10 views
61

मैं कोड की इस पंक्ति है:कैसे jQuery में उपयोग करने के लिए: नहीं और hasClass() किसी विशिष्ट तत्व के एक वर्ग के बिना प्राप्त करने के लिए

$('#sitesAccordion .groupOfSites').click(function() { 
    var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)'); 
    console.log(lastOpenSite); 
}); 

मैं बजाय अन्य तत्वों में से एक होने का "गलत" मिलता है (यह मानते हुए कि एक है - और वहां होना चाहिए)। मुझे लगता है कि समस्या के साथ है:

.hasClass(':not(.closedTab)'); 

समस्या क्या है?

मेरे उद्देश्य

(jQuery यूआई का उपयोग किए बिना) मेरे अपने अकॉर्डियन बनाने के लिए है और मैं इसे इस तरह लिखने की कोशिश कर रहा हूँ:

$('#sitesAccordion .groupOfSites').click(function() { 

    //Get the last opened tab 
    var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)'); 

    //Close last opened tab and add class 
    lastOpenSite.hide().toggleClass('closedTab'); 

    //Open the current Tab 
    $(this).children('.accordionContent').toggle('fast'); 

    // remove class from open tab 
    $(this).toggleClass('closedTab'); 


}); 

यह सबसे अच्छा तरीका है? धन्यवाद, एलन

उत्तर

94

उपयोग not समारोह के बजाय:

var lastOpenSite = $(this).siblings().not('.closedTab'); 

hasClass केवल परीक्षण एक तत्व एक वर्ग, not प्रदान की चयनकर्ता मिलान चयनित सेट से तत्व निकाल देंगे है या नहीं।

+0

ओह - यह एक मूर्ख गलती थी जो मैंने किया - उत्तर के लिए धन्यवाद! – Alon

7

jQuery की hasClass() विधि एक बूलियन (सत्य/झूठी) देता है और तत्व नहीं। इसके अलावा, इसे दिया जाने वाला पैरामीटर एक वर्ग का नाम है, न कि चयनकर्ता।

पूर्व के लिए: x.hasClass('error');

71

यह बहुत आसान इस तरह है:

if(!$('#foo').hasClass('bar')) { 
    ... 
} 

! मानदंडों के सामने झूठा मतलब है, अधिकांश प्रोग्रामिंग भाषाओं में काम करता है।

+0

ओपी क्या करने की कोशिश कर रहा है इसके लिए यह काम नहीं करेगा। यह सिर्फ परीक्षण करता है कि '# foo' की कक्षा है या नहीं, यह तत्वों के मिलान किए गए सेट को कम नहीं करता है। –

+0

thx। काम कर रहा है। – mboeckle

+3

इस तरह मेरी पूरी तरह से अलग स्थिति में बहुत अच्छा काम करता है। धन्यवाद। – richfinelli

1

अगर यह मूल पोस्टिंग के समय में सच था मैं नहीं जानता, लेकिन भाई बहन विधि, चयनकर्ताओं की अनुमति देता है तो क्या सूचीबद्ध ओपी की कमी होना चाहिए काम।

$(this).siblings(':not(.closedTab)'); 
संबंधित मुद्दे