2013-07-16 70 views
0

我正在嘗試使用手風琴和使用jQuery插件哈希變化插件的Twitter引導,如果使用location.hash打開頁面和請點擊其他項目更多時間,之前項目不能關閉並保持一個打開。如何保持Bootstrap手風琴一直開着,用hashchange事件,點擊事件?

有很好的解決方案,請大家幫幫忙謝謝​​

使用hashchange標籤: #collapseOne, #collapseTwo, #collapseThree,

問題

  • 項目開放
  • 商品打開
  • 項目接近

HTML

<div class="row"> 
    <div class="span32"> 
     <div class="accordion" id="accordion2"> 
      <div class="accordion-group"> 
       <div class="accordion-heading"> 
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne">Item #1</a> 
       </div> 
       <div id="collapseOne" class="accordion-body collapse"> 
        <div class="accordion-inner">content1</div> 
       </div> 
      </div> 
      <div class="accordion-group"> 
       <div class="accordion-heading"> 
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo">#2</a> 
       </div> 
       <div id="collapseTwo" class="accordion-body collapse"> 
        <div class="accordion-inner">content2</div> 
       </div> 
      </div> 
      <div class="accordion-group"> 
       <div class="accordion-heading"> 
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree">#3</a> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

JS

$(function() { 

     $(window).hashchange(function() { 
      var hash = location.hash; 
      var action = hash.replace('#', ''); 

      $('.accordion-heading a').click(function() { 
       window.location.hash = $(this).attr("href"); 
       console.log('--------'); 
       console.log(location.pathname); 
       console.log(hash); 
      }); 

      switch (action) { 
       case "collapseOne": 
        $("#collapseOne").collapse('toggle'); 
        break; 
       case "collapseTwo": 
        $("#collapseTwo").collapse('toggle'); 
        break; 
       case "collapseThree": 
        $("#collapseThree").collapse('toggle'); 
        break; 
       default: 

        break; 
      }; 
     }); 
     $(window).hashchange(); 
    }); 

這裏的demo

這裏的code

+0

我不知道如何告訴,這樣的狀態 1.going網址 - 網址#collapseOne 2.點擊item - url#collapseTwo 3.keyup back - open url#collap seOne && close - url#collapseTwo && hashchange – komodo

回答

1

試試這個(更新後的代碼進行哈希歷史):

$('.accordion-heading a').click(function(e) { 
    var hash = $(this).attr('href'); 
    document.title = 'The hash is ' + (hash.replace('#', '') || 'blank') + '.'; 
    location.hash = hash; 
}); 

jsFiddle

+0

thx,如果使用回來,如何在手風琴上添加監聽器切換到hashchange,到達像一些history.state。 – komodo

+0

答案和jsFiddle更新,嘗試'更新代碼的哈希歷史' –

0

ü希望這樣的事情fiddle

$('.accordion-toggle').on('click',function(e){ 
if($(this).parents('.accordion-group').children('.accordion-body').hasClass('in')){ 
    e.stopPropagation(); 
} 
}); 
+0

thx,我試試看。並與問題。我嘗試像history.state一樣到達。在手風琴上添加監聽器切換到hashchange – komodo

相關問題