2011-04-22 66 views
0

我在jquery中編寫了一個手風琴,它在相當好的情況下工作,但是在關閉之前打開的部分時我得到了反彈。jquery手風琴在上一節關閉時反彈

我試着設置一個活動類並檢查它,但是爲了節省頭痛而撕掉它。

我的Jquery:

var $runAccordionOnce = 0; var $accordionPrev; 

$(document).ready(function(){ 
    $(".sidebar_game_header").click(function(){ 
        if($runAccordionOnce > 0) { 

        $accordionPrev.slideUp('normal'); 
        $accordionPrev.prev().css({'background-position' : 'top left'}); 

        } 

        $accordionPrev = $(this).next(); 
        $(this).next().slideDown('normal'); 
        $(this).css({'background-position' : 'bottom left'}); 
        $runAccordionOnce++;    
    }); 
    }); 

而且我的HTML的樣本,每個遊戲節遵循此佈局:

<div class="sidebar_game_header"><div class="sidebar_game_header_text">Original Titles</div></div> 
    <div class="sidebar_game_content">   
    <ul> 
     <li><a href="<?php {echo $url . "&amp;game_id=9";} ?>">Game 1</a></li> 
      <li><a href="<?php {echo $url . "&amp;game_id=10";} ?>">Game 2</a></li> 
      <li><a href="<?php {echo $url . "&amp;game_id=8";} ?>">Game 3</a></li> 
    </ul> 
    </div> 
</div> 

這個問題似乎是,當點擊節頭已經打開它會滑下來再滑下去。 其餘的工作,點擊不同的部分將關閉以前打開的一個。

這讓我瘋狂了一陣子。有小費嗎?

謝謝!

回答

1

我相信這應該做到這一點。基本上只嘗試重新顯示該部分,如果它隱藏。當你點擊一個已經打開的東西時,我不完全確定你想要發生什麼。下面的代碼將隱藏它。

$(document).ready(function(){ 
    $(".sidebar_game_header").click(function(){ 
        if($runAccordionOnce > 0) { 

        $accordionPrev.slideUp('normal'); 
        $accordionPrev.prev().css({'background-position' : 'top left'}); 

        } 


     if($(this).next().is(":hidden")){ 
        $accordionPrev = $(this).next(); 
        $(this).next().slideDown('normal'); 
        $(this).css({'background-position' : 'bottom left'}); 
        $runAccordionOnce++;  
     }   
    }); 
    }); 

如果你不希望它隱藏,然後只檢查在開始的時候,如果你點擊一個是一個在$ accordionPrev和不隱藏它。

var $runAccordionOnce = 0; 
var $accordionPrev; 

$(document).ready(function() { 
    $(".sidebar_game_header").click(function() { 
     if ($runAccordionOnce > 0) { 

      if ($(this).next()[0] == $accordionPrev[0]) return; 

      $accordionPrev.slideUp('normal'); 
      $accordionPrev.prev().css({ 
       'background-position': 'top left' 
      }); 

     } 


     $accordionPrev = $(this).next(); 
     $(this).next().slideDown('normal'); 
     $(this).css({ 
      'background-position': 'bottom left' 
     }); 
     $runAccordionOnce++; 

    }); 
}); 
+0

謝謝!我非常感謝你的協助! – robertmegone 2011-04-22 16:20:00