2011-03-27 23 views
0

在此頁面的更簡單的辦法:of my website編碼這個

我有這個jQuery的,但它似乎有點長篇大論。

<script type="text/javascript"> 
$(document).ready(function(){ 
$("p").hide(); 
$("#lastfmrecords").hide(); 
$("h2.btn1 a").click(function(){ 
$("ol.btn1>*").toggle(400); 
}); 
$("h2.btn2 a").click(function(){ 
$("ol.btn2>*").toggle(400); 
}); 
$("h2.btn3 a").click(function(){ 
$("ol.btn3>*").toggle(400); 
}); 
$("h2.btn4 a").click(function(){ 
$("ol.btn4>*").toggle(400); 
}); 
$("h2.btn5 a").click(function(){ 
$("ol.btn5>*").toggle(400); 
}); 
    $("h2.btn6 a").click(function(){ 
$("ol.btn6>*").toggle(400); 
}); 
    $("h2.btn7 a").click(function(){ 
$("ol.btn7>*").toggle(400); 
}); 
}); 
</script> 

<h2 class="btn5"><a href="#">FAVOURITE Books</a></h2> 
    <ol class="btn5"> 
     <p>Freakonomics, Bad Science, A Brief History of Nearly Everything, 100 years of Solitude, On Chesil Beach</p> 
    </ol> 

然後,我有7個有序列表與這些名稱,沒有。 5以上(btn1 - btn7),當我點擊相應的H2標題時,它會切換。所有工作正常,但有沒有一種方法來壓縮jQuery?

+0

這似乎是http://codereview.stackexchange.com一個很好的問題。 – Maxpm 2011-03-27 17:30:09

回答

1

A for循環似乎是一個明顯的解決方案。

$(document).ready(function() { 
    $('ol').hide(); 
    for (var i = 1; i <= 7; ++i) { 
    $('h2.btn' + i + ' a').click(function() { 
     $('ol.btn' + i + ' > *').toggle(400); 
    }); 
    } 
}); 
+0

Blimey,那很快:)感謝Aistina,我會給它一個去。歡呼 – 2011-03-27 17:35:23

+0

我喜歡它。出於某種原因,人們傾向於避免jQuery中的循環,只是因爲它有自己的「處理所有這些東西」的功能。有時候for循環只是最好的選擇。 – Mala 2011-03-27 17:46:19

0

首先,你可以在一個div包裹h2的和你的<a> rel到類的ol你想切換

<div class="wrapper"> 
    <h2><a rel="btn1"> </a><ol class="btn1">...</ol> 
    ... 
    <h2><a rel="btn7"> </a><ol class="btn7">...</ol> 
</div> 

然後做如下,請注意您還可能希望通過傳入event對象作爲函數參數來防止瀏覽器滾動到頂部並呼叫.preventDefault()

$('.wrapper h2 a').click(function(e) { 
    e.preventDefault(); 
    $('ol.' + $(this).attr('rel') + ' p').toggle(400); 
}); 

編輯: 如果您願意讓您的佈局是,你也可以這樣做:

$('h2[class^=btn] > a').click(function(e) { 
    e.preventDefault(); 
    $('ol.' + $(this).parent().attr('class') + ' > p').toggle(400); 
}); 
+0

再一次,我對你們的速度印象深刻!猜猜這就是爲什麼我堅持設計而不是編碼:/謝謝你們兩位。 – 2011-03-27 17:41:33