すべての応答に感謝します。Jqueryゼロからのアコーディオン:アコーディオンとJqueryのパフォーマンスのためのマークアップQ
私は私の最初の質問はでaccourdionの正しいセマンティックHTMLは何かということです
(セマンティックHTMLに合わせて).. jQueryのアコーディオンを書くことが、私のマークアップとjQueryが正しいかではないかしらよ私が使用している文脈(JSFIDDLE example)..現在私はコンテンツをliとdivでulを使用しています。
2番目の質問は、このjqueryを改善することができますか?特定のjQueryスクリプトのパフォーマンスを測定しますか?
$(document).ready(function(){
//store the exact block of html we are working with... the context
var $context = $("ul#accordion")[0];
console.log($context);
//check the context
$("li a", $context).live("click", function(e){
//store this due to being used more than once
var $clicked = $(this);
//slide anything up thats already open
$("li div", $context).slideUp(200);
//test to see if the div is hidden or not..
//slide down if hidden
if($clicked.next().is(":hidden")){
$clicked.next().slideDown(200);
};
//prevent default behaviour
e.preventDefault();
});
});
どちらが私には正常に見えます。あなたの興味のために、jQuery UIのソースの例と比較したいと思うかもしれません:http://jqueryui.com/demos/accordion/ – Smamatti
すばらしい提案、ありがとう! – Iamsamstimpson
私は '$ clicked.next( ':hidden')とします。slideDown(200);' if(...)の代わりに。また、idは一意でなければならないので、 '$ context'では' [0] 'を省略することができます。 '$ clicked'は一度しか使われないので、削除して' $( "li div"、this) 'を直接使うことをお勧めします。 –