2011-02-24 30 views
0

這裏是我的代碼:如何滑下一個標籤,並關閉所有打開的其他人(的JQuery/JavaScript的)

<script>                
    $(document).ready(function() { 

     $('#t1').click(function() { 
      $('#p1').slideToggle('slow'); 
      $("#pm1, #pm1h").toggle(0); 
      removeContainer(); 
      $("#load1").load('file', showPlayer); 
     }); 

     $('#t2').click(function() { 
      $('#p2').slideToggle('slow'); 
      $("#pm2, #pm2h").toggle(0);  removeContainer(); 
      $("#load2").load('file', showPlayer); 
     }); 

     $('#t3').click(function() { 
      $('#p3').slideToggle('slow'); 
      $("#pm3, #pm3h").toggle(0);  removeContainer(); 
      $("#load3").load('file', showPlayer); 
     }); 

     $('#t4').click(function() { 
      $('#p4').slideToggle('slow'); 
      $("#pm4, #pm4h").toggle(0);  removeContainer(); 
      $("#load4").load('file', showPlayer); 
     }); 


    }); 
    </script> 

好吧所以我想要做的就是當有人點擊T1,T2, t3或t4時,所有處於下滑位置的其他標籤都會向上滑動(例如,如果t3和t4向下,一旦我點擊t1,t3和t4將向上滑動,然後t1向下滑動)。這將使得一次只能打開一個標籤。

我也需要正確的切換來對應選項卡的位置。默認情況下,所有選項卡都是隱藏的,並且都有加號,但是當您點擊任何選項卡時,它將展開並具有負號。我保持真實。

任何人都可以幫助或需要更多的澄清?

+3

哇,這是很多不必要的代碼重複。規則1:不要通過複製和粘貼進行編程。 – Tomalak 2011-02-24 17:09:37

回答

0

四位複製粘貼塊可以抽象成一個單一的一個,沿着這個線路:

$(function() { 
    $("div.tab").click(function() { 
    var idnum = this.id.replace(/\D/g, ''); // remove all "non-digits" from id 

    $("#p"+idnum).slideUp('slow'); 
    $("div.tab").not(this).slideDown('slow'); // or the other way around 

    $("#pm"+idnum+", #pm"+idnum+"h").toggle(0); 
    removeContainer(); 
    $("#load"+idnum).load('file', showPlayer); 
    }); 
} 

注意

  • $()取代$(document).ready()
  • not()從集合中刪除元素。實際上,這是你所尋找的「所有其他人」。
  • 使用一個CSS類(我用.tab)來識別和處理你的元素作爲一個集合。正如你所注意到的那樣,使用ID很麻煩。
相關問題