質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

797閲覧

「もっと見る」を複数の要素に追加したい

pontas

総合スコア54

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/09/09 08:09

編集2021/09/09 09:07

前提・実現したいこと

「もっと見る」を複数の要素に追加したいです。

「もっと見る」が「a.link」3つ以上要素があれば表示されるようにしたいのですが
上手く動作しませんでした。

どなたかわかる方がおりましたらお手数をおかけし申し訳ございませんが教えていただけないでしょうか

発生している問題・エラーメッセージ

「もっと見る」ボタンが設定した要素の数で上手く消えてくれませんでした

該当のソースコード

<div class="link"> <div class="link_wrap"> <a href="" class="link">テキスト</a> <a href="" class="link">テキスト</a> <a href="" class="link">テキスト</a> <a href="" class="link">テキスト</a> <a href="" class="link">テキスト</a> </div> <div class="more"> <p class="btn">もっと見る</p> </div> </div> <div class="link"> <div class="link_wrap"> <a href="" class="link">テキスト</a> <a href="" class="link">テキスト</a> <a href="" class="link">テキスト</a> </div> <div class="more"> <p class="btn">もっと見る</p> </div> </div> <div class="link"> <div class="link_wrap"> <a href="" class="link">テキスト</a> <a href="" class="link">テキスト</a> </div> <div class="more"> <p class="btn">もっと見る</p> </div> </div> <style> .hidden { opacity: 0; height: 0; margin: 0; pointer-events: none; } </style> <script> $(document).ready(function() { var num = 3; $('.link_wrap a:nth-child(n + ' + (num + 1) + ')').addClass('hidden'); $('.more').on('click', function() { $(this).prev().children('a.hidden').slice(0, num).removeClass('hidden'); if ($(this).prev().children('a.hidden').length == 1) { $(this).hide(); } }); $('.link_wrap a').each(function(index) { if (index > num) { $(this).parent().next('.more').hide(); } }); });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/09/09 09:05

>「a.link」3つ以上要素があれば表示されるようにしたい 3つ表示したいなら4つ以上ですよね? 下の2つの「.link_wrap」は3つ以下なのでmoreが表示されない のが正しいと思いますが?
pontas

2021/09/09 09:11

ご指摘ありがとうございます。 ループがどうやら「.link_wrap a」をすべて取得している為、 表示されている上から数えているようです なので要素を増やしても正しく表示されない状況です
guest

回答2

0

ベストアンサー

javascript

1<script> 2$(function(){ 3 var num = 3; 4 $('.link_wrap').each(function(){ 5 $('a:gt('+(num-1)+')',this).hide(); 6 }); 7 $('.more').hide(); 8 $('a:hidden').closest('.link_wrap').next('.more').show(); 9 $('.btn').on('click',function(){ 10 $(this).closest('.more').prev('.link_wrap').find('a').show(); 11 $(this).hide(); 12 }); 13}); 14</script> 15<div class="link"> 16 <div class="link_wrap"> 17 <a href="" class="link">テキスト11</a> 18 <a href="" class="link">テキスト12</a> 19 <a href="" class="link">テキスト13</a> 20 <a href="" class="link">テキスト14</a> 21 <a href="" class="link">テキスト15</a> 22 </div> 23 <div class="more"> 24 <p class="btn">もっと見る</p> 25 </div> 26</div> 27<div class="link"> 28 <div class="link_wrap"> 29 <a href="" class="link">テキスト21</a> 30 <a href="" class="link">テキスト22</a> 31 <a href="" class="link">テキスト23</a> 32 <a href="" class="link">テキスト24</a> 33 </div> 34 <div class="more"> 35 <p class="btn">もっと見る</p> 36 </div> 37</div> 38<div class="link"> 39 <div class="link_wrap"> 40 <a href="" class="link">テキスト31</a> 41 <a href="" class="link">テキスト32</a> 42 </div> 43 <div class="more"> 44 <p class="btn">もっと見る</p> 45 </div> 46</div> 47 48

投稿2021/09/09 09:18

yambejp

総合スコア116734

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pontas

2021/09/09 09:39

ありがとうございます! 無事、正常な挙動が確認できました 本当にありがとうございました。
guest

0

jqueryは読み込まれていますか?
$(document).ready(function() を使うのであればjqueryの読み込みが必要です。

html

1<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

投稿2021/09/09 08:30

meli

総合スコア312

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pontas

2021/09/09 09:07

ご連絡ありがとうございます。 はい読み込んでます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問