
jQueryで記事を6列表示にしたいのです。
jQueryで6列表示をしたいと思って試行錯誤をしていたのですが、
全くわからずじまいで、どうしたらいいのかと知恵袋に投稿致しました。
各カテゴリごとに表示をするようになっているのですが、
オールだけ全て表示になります。
5つ残して表示させればいいのですが、各カテゴリが
消えてしまうので、どうしてもオールは6行表示させたいと思っています。
どなたか助けていただけませんでしょうか?
jQuery ----------------------------------------------
$(document).ready(function() {
$('ul#navi a').click(function() {
$(this).css('outline','none');
$('ul#navi .all').removeClass('current');
$(this).parent().addClass('current');
var filterVal = $(this).text().toLowerCase().replace(' ','-');
if(filterVal == 'all') {
$('ul#portfolio li.hidden').fadeIn('slow').removeClass('hidden');
} else {
$('ul#portfolio li').each(function() {
if(!$(this).hasClass(filterVal)) {
$(this).fadeOut('normal').addClass('hidden');
} else {
$(this).fadeIn('slow').removeClass('hidden');
}
});
}
return false;
});
});
HTML ----------------------------------------------
<ul id="navi">
<li class="all"><a href="#">All</a></li>
<li><a href="#">CMS</a></li>
<li><a href="#">CSS</a></li>
<li><a href="#">Javascript</a></li>
</ul>
<ul id="portfolio">
<li class="cms"><a href="#">Movable Type</a></li>
<li class="cms"><a href="#">Movable Type</a></li>
<li class="cms"><a href="#">Movable Type</a></li>
<li class="css"><a href="#">CSSテンプレート</a></li>
<li class="javascript"><a href="#">prototype</a></li>
<li class="css"><a href="#">CSSビギナー</a></li>
<li class="css"><a href="#">CSSテンプレート</a></li>
<li class="css"><a href="#">CSSテンプレート</a></li>
<li class="javascript"><a href="#">jQuery</a></li>
<li class="javascript"><a href="#">jQuery</a></li>
<li class="javascript"><a href="#">jQuery</a></li>
<li class="javascript"><a href="#">jQuery</a></li>
<li class="javascript"><a href="#">plugin</a></li>
</ul>
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
> 何とかできたのですが、こんな感じでいいのか不安です。
目的が「ul#portfolio内の項目数を6つに制限する」なのであれば、ひとまず動くんじゃないでしょうかね。
クリックの度に動作させているので、あまり効率よくありませんが。
ま、動いているのであればいいんじゃないですか。
私の前の回答をreadyのすぐ下の行あたりに書いても動くはずですよ。
1行で済みますし。
$("li","#portfolio").eq(5).nextAll().remove();
質問者さんのコードは、
・全部非表示にする。
・必要分だけ表示
をクリックの度に繰り返しているというものですが、
私の回答は、
・ページ読み込み時に、7つめ以降の項目を削除(非表示ではない)する。
というものでした。
参考までに。
No.4
- 回答日時:
スーパースペシャルミラクル読心術を使ってお応えするならば、要は、ul#portfolioのliを5つにしたいということかな。
それならば、
$("li","#portfolio").eq(4).nextAll().remove();
でいけますよ。
この回答への補足
わからないなりにこういった感じ者を作りたいと思っていました。
何とかできたのですが、こんな感じでいいのか不安です。
$(document).ready(function() {
var nCnt2 = 1;
var nMax2 = 6;
if(nMax2 < $('ul#portfolio li').length) {
$('ul#portfolio li').hide('fast').addClass('hidden');
$('ul#portfolio li.hidden').hide('fast').addClass('hidden');
$('ul#portfolio li.hidden').each(function() {
if(nCnt2 <= nMax2) {
$(this).fadeIn('slow').removeClass('hidden');
}
nCnt2++;
});
}
$('ul#navi a').click(function() {
$(this).css('outline','none');
$('ul#navi .all').removeClass('current');
$(this).parent().addClass('current');
var filterVal = $(this).text().toLowerCase().replace(' ','-');
var nCnt = 1;
var nMax = 6;
if(filterVal == 'all') {
$('ul#portfolio li').hide('fast').addClass('hidden');
$('ul#portfolio li.hidden').hide('fast').addClass('hidden');
$('ul#portfolio li.hidden').each(function() {
if(nCnt <= nMax) {
$(this).fadeIn('slow').removeClass('hidden');
}
nCnt++;
});
} else {
$('ul#portfolio li').hide('fast').addClass('hidden');
$('ul#portfolio li').each(function() {
if(!$(this).hasClass(filterVal)) {
$(this).fadeOut('normal').addClass('hidden');
} else if (nCnt <= nMax) {
$(this).fadeIn('slow').removeClass('hidden');
nCnt++;
}
});
}
return false;
});
});
No.3
- 回答日時:
同じく、質問の意味がさっぱりわかってない者ですが、
察するところ、いろいろな絞込みができればとりあえずの用には足りそうな…
当たるも八卦ということで、勝手に違うもの(代わり)を作成してみました。
>cssはデザインだけなので、使用はしていません
ul内のクラス設定は使用していないと考えていいのですね?
その割には、コードではクラス設定をしたりしているのが疑問ですが、それは置いておいてクラスをキーワードに利用してしまうという案。
クリックしたリストのクラスとマッチするものが表示されます。
別にセットでリストを用意しておかなくても、チェックボックスなどで自由に組み合わせられる方が良さそうですが、リストの方がもとの形に近いということで…(当たるも八卦なので、原理のみのコードです)
「all」だけは特別な語として扱うようにしています。
ご提示のコードの、クラスを操作している部分は(↑)の「使用していない」ということから不要と見做して省き、また、コード中でreturn falseになっているので、リンクも不要と判断して省いています。
(以下、全角空白は半角に)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="ja">
<head><title>test</title>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("jquery","1.5.0");</script>
<script type="text/javascript">
<!--
$(document).ready(function(){
$("ul#navi li")
.css({color:"#00f", cursor:"pointer"})
.click(function(){
var key = this.className.split(" ");
var i = 0, k;
while(k=key[i++]) if(k=="all") key = ["all"];
$("#portfolio li").each(function(){
var t = $(this), f = true;
if(key[0] != "all")
for(var i=0, n=key.length; i<n; i++)
if(!t.hasClass(key[i])){ f = false; break; }
if(f) t.fadeIn(); else t.fadeOut();
});
});
});
//-->
</script>
</head>
<body>
<ul id="navi">
<li class="all">全部</li>
<li class="animal">動物</li>
<li class="fish">魚</li>
<li class="bird">鳥</li>
<li class="large">大きいもの</li>
<li class="middle dog">中型の犬</li>
<li class="ocean fish">海の魚</li>
<li class="africa large">アフリカの大きなもの</li>
<li class="africa large bird">アフリカの大きな鳥</li>
</ul>
<ul id="portfolio">
<li class="animal elephant large africa">アフリカ象</li>
<li class="animal elephant large asia">アジア像</li>
<li class="animal giraffe large africa">キリン</li>
<li class="animai dog middle asia">芝犬</li>
<li class="animal dog middle europe">ドーベルマン</li>
<li class="animal dog little america">チワワ</li>
<li class="animal large ocean">シロナガスクジラ</li>
<li class="fish little ocean">秋刀魚</li>
<li class="fish little river">錦鯉</li>
<li class="fish little ocean river">鮭</li>
<li class="bird large africa">ダチョウ</li>
<li class="bird middle america">コンドル</li>
<li class="bird middle asia">トキ</li>
</ul>
</body>
</html>
No.2
- 回答日時:
こんにちは。
補足ありがとうございます。
読解力が無く申し訳ございません。何をしたいか伝わって来ません。
id="navi"のリンクを選択したらid="portfolio"の内容が表示されたり非表示になったりする動作なのでしょうか。
例えば、CMSをクリックするとil class="cms"が表示されたり非表示になったり。
で、質問のオールで6行とは何が6行なんでしょうか。
このスクリプトがこういう操作をしたらこうなるんです。
でも、こうしたいんだけどこうなってしまうんです。
具体的に何をしたときにどうなって、何をしたらどうしたいというのを補足いただけませんか。
キーワードとなっている
6行とは?
記事とは?
これがわからないと何をアドバイスして良いかわかりかねます。
自分は仕様ややりたいことがわかっているのでしょうが、回答者は仕様、やりたいことわかりません。
補足いただく前にきちんと読み返して、これで伝わるかどうか確認してから補足してください。
No.1
- 回答日時:
こんにちは。
記事を6列って何のことを示しているのでしょうか。
5つ残して表示って何が5つ残るのでしょうか。
またCSSがどのような設定になっているかわからないので回答が難しいです。
何をどうしたいか、もうちょっと伝わるように補足お願いします、
この回答への補足
大変申し訳ございません!
6行と言いたかったのですが、言葉が思いつかなく6列と書いてました。
cssはデザインだけなので、使用はしていません。
主にjQueryで操作を行なっています。
jQueryで、六行の制御をかけたいと思っております。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のラジオボタン項目でのテ...
-
同一ページ内で、任意の文字列...
-
gridstack.jsについて教えてく...
-
SleniumBasicでコンパイルエラ...
-
【JQuery】アコーディオンの入...
-
タブ切り替えの初期表示について
-
jQueryでネスト構造の<li>がク...
-
アコーディオンメニューの開閉制御
-
jqueryにてIEでの不具合 each...
-
javascriptでフォーカスを当て...
-
【javascript で動的に a タグ...
-
JSPでの画像ファイル表示
-
プルダウンとチェックボックス...
-
MAX関数を使ってからLEFT JOIN...
-
jspでcssが読み込めない
-
iframe内のリンクが飛ばないの...
-
eclipseでcssを使うためには?
-
パララックスについて 上下に...
-
jQueryで同じクラス名のものを...
-
クリックした自身の画像を別画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
jqueryのsortableで一部ソート...
-
どの<li><a> が押されたか判別...
-
同一ページ内で、任意の文字列...
-
タブ切り替えの初期表示について
-
jQueryスライドメニューの初歩...
-
jQueryのeqで最後からn番目以降...
-
javascriptでフォーカスを当て...
-
<li></li>の数を制限
-
【javascript で動的に a タグ...
-
JS <a></a>タグ内のリンク先ア...
-
『JavaScript Accordion』について
-
カレントページ aタグではなく...
-
jQueryプラグインのメガドロッ...
-
jQueryで記事を6列表示にした...
-
大至急!!HPビルダー16の専...
-
jquery 親要素以外の取得
-
下記のようにクリックすると、...
-
jQueryでネスト構造の<li>がク...
-
ページの上下に同じタブメニュ...
-
jQueryについて質問なのですが...
おすすめ情報