2010-11-02 16 views
5

बहुत सरलता से डाला गया: लाइन currentItem.toggleClass('open'); काम नहीं कर रहा है।jQuery टॉगल क्लास काम नहीं कर रहा है?

अधिक सटीक, फ़ायरबग के साथ परिणामों का निरीक्षण करते समय, मैं प्रासंगिक तत्व पर "खुला" चमक (दिखाई देने और तुरंत गायब होने) कक्षा देख सकता हूं। तो ऐसा लगता है कि फ़ंक्शन वास्तव में दो बार ट्रिगर होता है (बेशक मैं केवल एक बार क्लिक करता हूं)।

क्या कोई मुझे समझा सकता है कि यह क्यों है और इसे कैसे रोकें?

यहाँ मेरी jQuery कोड है:

$('div.collapse ul.radio_list li input[type=radio]').click(function (event) { 

    var currentTree = $(this).parent().parent().parent(); 
    var currentItem = $(this).parent().parent(); 
    var currentGroup = currentItem.attr('rel'); 

    $(this).parents('ul').children('li').removeClass('select'); 
    if ($(this).is(':checked')) { 
     currentItem.addClass('select'); 
    } 

    currentItem.toggleClass('open'); 

    var currentLevel = 0; 
    if (currentItem.is('.level1')) {currentLevel = 1;} 
    if (currentItem.is('.level2')) {currentLevel = 2;} 
    if (currentItem.is('.level3')) {currentLevel = 3;} 
    var nextLevel = currentLevel + 1; 

    currentTree.children('li').filter('li[rel ^=' + currentGroup + '].level' + nextLevel).animate({'height': 'show', 'opacity': 'show'}, 250).addClass('currentChild'); 
}); 

और यहाँ मेरी HTML कोड का एक हिस्सा है, थोड़ा बेहतर पठनीयता के लिए सरल बनाया (नहीं बहुत सुंदर मुझे पता है, लेकिन मैं केवल HTML आउटपुट पर एक सीमित नियंत्रण है):

<div class="col_left collapse"> 
    <ul class="radio_list" rel="7"> 
     <li class="onglet level0" rel="group1"> 
      <span class="onglet level0"> 
       <input type="radio" /> 
        <label>Services Pratiques</label></span> 
      <input type="hidden" value="1"> 
     </li> 

अग्रिम धन्यवाद।

+1

क्या आप वाकई फ़ंक्शन को दो बार बाध्य नहीं करते हैं? – NOtherDev

+0

@ ए .: मुझे ऐसा नहीं लगता: यह एकमात्र समय है जब मैं अपने पृष्ठ में ".click()" का उपयोग करता हूं, और साथ ही साथ मैं इस कक्षा के नाम को संशोधित करता हूं। मैंने बिना किसी बेहतर परिणाम के अन्य वर्ग नामों का उपयोग करने की भी कोशिश की। – s427

+0

@ ए .: असल में आप सही थे! मैं एक ढांचे (प्राडो) के साथ काम कर रहा हूं कि मुझे बहुत अच्छी तरह से पता नहीं है, और मुझे पता नहीं था कि जेएस फ़ाइल को HTML हेड में दो बार शामिल किया गया था। इसे सुधारने से समस्या हल हो गई है। धन्यवाद! – s427

उत्तर

12

समस्या हल हो गई: जेएस फ़ाइल वास्तव में HTML हेड में दो बार शामिल की गई थी, जिससे प्रत्येक क्लिक के साथ फ़ंक्शन को दो बार ट्रिगर किया गया।

+0

कीबोर्ड के खिलाफ एक घंटे की तरह मेरे सिर को टक्कर देने के बाद, आपकी टिप्पणी ने मेरे लिए यह किया ... मैं इसे दो बार शामिल करता था। Ughhhhh –

2

मुझे अपनी साइट पर एक ही समस्या थी, और मैंने पाया कि मैंने गलती से नीचे टॉगलक्लास हुक को डुप्लिकेट किया था, जब पहली बार इसके साथ गड़बड़ हो रही थी। ऊप्स! डबल कॉल की तलाश सुनिश्चित करें!

एचटीएमएल:

<a>JS-link</a> 

js:

$('a').click(function(event) { 
    ... my stuff ... 
    # Forgot to do event.preventDefault(); !! 
} 

क्लिक के रजिस्टर किया जा रहा है दो बार में परिणाम

1

मैं एक ऐसी ही समस्या यह कर था!

1

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

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