2010-11-17 10 views
6

मूल पोस्ट: यह सरल स्क्रिप्ट क्यों काम नहीं करती है?यदि हैस्क्लास है तो माता-पिता

if ($('#navigation > ul > li > ul > li > a').hasClass('.active')) { 
    $(this).parent().parent().parent().addClass(".active"); 
} 

संपादित करें:

यह एच 1 छिपा नहीं होगा:

if ($('#content h1').hasClass('aktiv')) { 
    $(this).hide(); 
} 

केवल इस जाएगा:

if ($('#content h1').hasClass('aktiv')) { 
    $('#content h1').hide(); 
} 

मैं उपयोग नहीं कर सकते क्यों (इस)?

उत्तर

24

डॉट कक्षा के नाम का हिस्सा नहीं है। यह केवल सीएसएस/jQuery चयनकर्ता नोटेशन में प्रयोग किया जाता है। ऐसा करें: $(this) कि लंगर के लिए संदर्भित करता

if ($('#navigation a').hasClass('active')) { 
    $(this).parent().addClass('active'); 
} 

हैं, तो आप $('#navigation a') लिए इसे बदलने के लिए और साथ ही क्योंकि अगर हालत jQuery कॉलबैक गुंजाइश नहीं है है।

0

आप शायद करने के लिए if ($(this).hasClass('active'))

इसके अलावा, hasClass और addClassclassnames, चयनकर्ताओं नहीं ले हालत बदलना चाहते हैं।
इसलिए, आपको . शामिल नहीं करना चाहिए।

+0

मैं के साथ समस्याओं मिला मेरी (यह) ... क्यों ... –

2

वैकल्पिक रूप से आप इस्तेमाल कर सकते हैं:

if ($('#navigation a').is(".active")) { 
    $(this).parent().addClass("active"); 
} 
+0

+ 'है()' के लिए 1, लेकिन 'addClass() 'अभी भी डॉट ड्रॉप करने की आवश्यकता है। – BoltClock

+0

आह अच्छा स्थान, मैं परिवर्तन कर दूंगा –

+0

आह .. उस डॉट के बारे में नहीं पता था। मेरी संपादित पोस्ट देखें। –

0

आप jQuery के बाद से $(this) उपयोग नहीं कर सकते पता नहीं है क्या यह नहीं है। आप चीजों को कम करने लगते हैं। आप $('#content h1.aktiv').hide() कर सकते हैं। यह देखने के लिए कोई कारण नहीं है कि कक्षा मौजूद है या नहीं।

+0

मुझे एक स्क्रिप्ट की आवश्यकता है, जो पता चलता है कि कक्षा ".aktiv" के साथ कोई वस्तु है या नहीं। यदि कक्षा पाई जाती है, तो माता-पिता माता-पिता माता-पिता को एक ही कक्षा दी जानी चाहिए। संपादित भाग, अगर-वाक्य के साथ, बस कुछ ऐसा है जो मैंने स्टंप किया - एक बग, अगर आपको पसंद है, तो मैं सिर्फ आपको लोगों को सुनना चाहता था। –

+1

आप $ ('# content h1.aktiv') कर सकते हैं। माता-पिता()। Parent()। Addclass ('aktiv') सशर्त के बिना। –

0

कारण यह है कि काम नहीं करता है, क्योंकि this एक के अंदर अगर बयान कोई विशेष अर्थ नहीं है, तुम कहाँ this परिभाषित किया गया है गुंजाइश का एक स्तर (एक समारोह) के लिए वापस जाना होगा।

उदाहरण के लिए:

$('#element1').click(function() { 
    console.log($(this).attr('id')); // logs "element1" 

    if ($('#element2').hasClass('class')) { 
     console.log($(this).attr('id')); // still logs "element1" 
    } 
}); 
0

किसी को भी वर्डप्रेस उपयोग कर रहा है, तो आप की तरह कुछ का उपयोग कर सकते हैं:

if (jQuery('.dropdown-menu li').hasClass('active')) { 
    jQuery('.current-menu-parent').addClass('current-menu-item'); 
} 
संबंधित मुद्दे