Skip to content

Instantly share code, notes, and snippets.

@tmitz
Forked from taea/gist:4169169
Created November 30, 2012 01:50
Show Gist options
  • Save tmitz/4173232 to your computer and use it in GitHub Desktop.
Save tmitz/4173232 to your computer and use it in GitHub Desktop.
listのn番目以降を隠したり表示したりするjQuery(gist: 4168815 をもうちょっとかっこよくした)
:javascript
$(function(){
var contents = '.list li'; //対象のlist
var trigger = '.trigger'; //スイッチ
var contentsLength = $(contents).length; //listの個数
var n = 10; //初期状態で表出したいlistの個数
//listがn個以上ある場合は
if(contentsLength > n){
alert(contentsLength);
//n番目以降を隠す
for(var i=n; i<contentsLength; i++){
$(contents+ ':eq(' +i+ ')').hide();
}
$(trigger).click(function(){
if($(contents + ':eq(' +n+ ')').is(":hidden")){
for(var i=n; i<contentsLength; i++){
$(contents+ ':eq(' +i+ ')').fadeIn("fast");
}
$(trigger).html([
'<a href="#">',
'<i class="icon-sort-up"></i>',
'閉じる',
'</a>'
].join(''));
}else{
for(var i=n; i<contentsLength; i++){
$(contents + ':eq(' +i+ ')').fadeOut("fast");
}
$(trigger).html([
'<a href="#">',
'<i class="icon-sort-down"></i>',
'もっと見る',
'</a>'
].join(''));
}
});
//listがn個以下の場合はスイッチを隠す
}else{
$(trigger).hide();
}
});
@tmitz
Copy link
Author

tmitz commented Nov 30, 2012

変更点

  • for で回すのださいので sliceに
  • toggleっぽい処理ばっかりだったのでtoggle使うように構成変更

あとhtmlはこのくらいならサーバーサイド側で初めから仕込んでもらってよい気がする

@tmitz
Copy link
Author

tmitz commented Nov 30, 2012

もしくはtoggleする前提にhtml組み直すのもアリかと

@taea
Copy link

taea commented Nov 30, 2012

うおお、あざっす!
slice…そんな技が・・・知らなんだ(ΦωΦ)
そうか、toggle使うと、$(trigger).htmlの部分はhtmlにそのまま書いて置いたほうがよさそうですねw

@taea
Copy link

taea commented Nov 30, 2012

勉強になるなあ:rabbit:

@tmitz
Copy link
Author

tmitz commented Nov 30, 2012

そうすると8〜29行目までJSから消せるッ・・・!
JS側でHTMLガチャガチャ組むのキライなだけですw 必要なときはjsRenderみたいなテンプレートエンジン使いますな。

@taea
Copy link

taea commented Nov 30, 2012

確かに、JSの中にHTML書くとわかりにくいもんなあ。サーバーサイドに書ける時は書いて置いたほうがよいのですね:hatched_chick:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment