2012-05-22 22 views
2

我真的堅持了我的代碼,它的工作,除了一件事很好,我需要關閉所有打開的div,當我點擊其他分區打開,這裏是我的代碼:jQuery的撥動一個DIV當其他激活

function readFaq() { 

$('.find-faq-inner h3').prepend('<span id="spanfaq" class="faq-open"></span>'); 

$('.find-faq-inner h3').each(function() { 
    var tis = $(this), state = false; 
    var answer = tis.next('div').hide().css('height', 'auto').slideUp(); 

    tis.click(function() { 
     state = !state; 
     answer.slideToggle(state); 
     tis.toggleClass('active', state); 

     if (state == true) { 
      tis.find('#spanfaq').removeClass('faq-open'); 
      tis.find('#spanfaq').addClass('faq-close'); 
     } 
     else { 
      tis.find('#spanfaq').removeClass('faq-close'); 
      tis.find('#spanfaq').addClass('faq-open'); 
     } 

    }); 
    }); 
} 


<div class="find-faq-inner"> 
    <div class="text"> 
    <h3>FAQ1</h3> 
    <div> 
    text of faq 
    </div> 
    </div> 
</div> 

任何想法將是有益的,感謝

+0

類的DIV的直接子女,被稱爲該函數的div?我們能否獲得更多標記? – mattytommo

+1

此行「var answer = tis.next('div')。hide()。css('height','auto')。slideUp();」一次做太多事情;你應該考慮把它分開。 – frenchie

回答

1
function readFaq() { 

$('.find-faq-inner h3').prepend('<span id="spanfaq" class="faq-open"></span>'); 

$('.find-faq-inner h3').each(function() { 
    var tis = $(this), state = false, answer = tis.next('div').hide().css('height', 'auto').slideUp(); 
    tis.click(function() { 
     state = !state; 

     $('.find-faq-inner .text div').hide();// This will hide all the divs 

     answer.slideToggle(state); 
     tis.toggleClass('active', state); 

     if (state == true) { 
      tis.find('#spanfaq').removeClass('faq-open'); 
      tis.find('#spanfaq').addClass('faq-close'); 
     } 
     else { 
      tis.find('#spanfaq').removeClass('faq-close'); 
      tis.find('#spanfaq').addClass('faq-open'); 
     } 

    }); 
    }); 
} 

在我加入 $('.find-faq-inner .text div').hide();

這將隱藏在所有的div上述功能股利,相應地在你的代碼中使用它。

要在更安全,你還可以使用

$('.find-faq-inner .text > div').hide();

它會隱藏只有那些text

+0

工作,感謝您的幫助! – Renaldas