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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

199閲覧

要素の数をカウントして、対象のクラスにスタイルを追加したい。

scoa

総合スコア66

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/05/10 04:28

編集2019/05/10 07:56

※大変申し訳ございません、質問内容を修正します。

.tag_set aの数が2つ以上のとき、
2つ以上になっている.grad_wrapブロック内を、

①「.tag_setの親div」に「.grad_item」を付与する
②「.grad_btn_js」を「display: flex;」にする

という動きをしたいです。(HTMLの例だと、2つ目の.grad_wrapが対象)
※.grad_wrapは増える可能性あります。

いただいた回答をもとに調整を試みましたが、
上手くいきません。

恐れ入りますが、ご教示の程よろしくお願いいたします。

HTML

1<div class="grad_wrap"> 2 3 <input id="trigger1" class="grad_trigger" type="checkbox"> 4 <label class="grad_btn grad_btn_js" for="trigger1">ほげほげ</label> 5 6 <div> 7 <div class="tag_set"> 8 <a href="https://hoge">リンク</a> 9 </div> 10 </div> 11 12</div> 13 14<div class="grad_wrap"> 15 16 <input id="trigger1" class="grad_trigger" type="checkbox"> 17 <label class="grad_btn grad_btn_js" for="trigger1">ほげほげ</label> 18 19 <div> 20 <div class="tag_set"> 21 <a href="https://hoge">リンク</a> 22 <a href="https://hoge">リンク</a> 23 <a href="https://hoge">リンク</a> 24 </div> 25 </div> 26 27</div>

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんにちは

CSSの疑似クラス nth-child を使って、

修正前:

javascript

1$('.hoge').css('display','block');

修正後:

javascript

1$('.hoge:nth-child(2)').css('display','block');

とすればよいかと思います。
以下、使用例です。確認のため <div class="hoge">を3つにしています。

追記

上記の回答は、質問の題意を勘違いしていたかもしれません。その場合はどうぞスルーしてください。

追記2

上記の回答は、ご質問の意図が

  • .hoge の中にある a の総数(ご質問に挙げられているHTMLだと4個)が 2個以上のとき、 2番目の .hogeのスタイルを変更したい。 (2番目の .hoge それ自体に含まれる a が1個または0個であっても。)

というものであると解釈したものでしたが、そうではなく、

  • .hoge の各々について、各 .hoge の中にある aの個数に応じて、スタイルを変えたい。

というのが主旨であるならば、例えば以下のようにします。

javascript

1$('.hoge').each(function(){ 2 $(this).css( 3 'display', 4 $('a', this).length >= 2 ? 'block' : 'none' 5 ); 6});

上記では、各 .hoge について、その中にある a の個数が2個以上ならばdisplayblockを、 1個以下であれば none を設定しています。

追記3

以下、修正後のご質問に対する回答になります。
他の書き方もありそうですが、一例として、

javascript

1 $('.grad_wrap').each(function() { 2 const tagSet = $('.tag_set', this); 3 if ($('a', tagSet).length >= 2) { 4 tagSet.parent().addClass('grad_item'); 5 $('.grad_btn_js', this).css('display', 'flex'); 6 } 7 });

以下は上記のコードを動作確認するためのものです。

分かりやすくするため、「ほげほげ」や「リンク」などのテキストの末尾に番号を追加し、.grad_wrapのdivを4個にして、スタイルも適当に追加しました。

以上、参考になれば幸いです。

投稿2019/05/10 04:39

編集2019/05/10 08:03
jun68ykt

総合スコア9058

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

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

yambejp

2019/05/10 04:44

$('.hoge:nth-child(2)')的な処理は一番やっちゃいけないやつですよ これではクラスの中のn番目とか指定できません ちなみに今回の質問自体複数のaを持つ.hogeにcssを付加したいようなので その意味でも違うような気がします
scoa

2019/05/10 07:40

ありがとうございます。質問内容を修正しました。説明不足で申し訳ございません。お手数ですが再度ご確認いただけますと幸いです。
jun68ykt

2019/05/10 08:04

> abiscoaさん こんにちは。 修正後のご質問に対するコード例を、回答のほうに追記3 として書きましたので、ご確認ください。
scoa

2019/05/10 08:49

早々にありがとうございます。実現できました。
jun68ykt

2019/05/10 09:23

> abiscoaさん 解決したようですね、よかったです???? > yambejpさん 貴重なご意見、ありがとうございました。
guest

0

javascript

1$(function(){ 2 $('.hoge').filter(function(){ 3 return $(this).find('a').length>=2; 4 }).css('display','block'); 5});

追記

.hoge以外のクラス(例えば.fuga)にスタイル追加したい

質問の意図がちょっとわからないですが
hogeができればfugaもできるのでは?
hogeとfugaをそれぞれ同じ条件でcssを設定するならカンマでつないでください

javascript

1<script> 2$(function(){ 3 $('.hoge,.fuga').filter(function(){ 4 return $(this).find('a').length>=2; 5 }).css('background-Color','red'); 6}); 7</script> 8 9 10<div class="hoge"> 11<a href="#">リンクhoge1</a> 12</div> 13 14<div class="hoge"> 15<a href="#">リンクhoge2</a> 16<a href="#">リンクhoge3</a> 17<a href="#">リンクhoge4</a> 18</div> 19 20<div class="hoge"> 21<a href="#">リンクhoge5</a> 22<a href="#">リンクhoge6</a> 23</div> 24 25<div class="fuga"> 26<a href="#">リンクfuga1</a> 27<a href="#">リンクfuga2</a> 28<a href="#">リンクfuga3</a> 29</div> 30 31<div class="fuga"> 32<a href="#">リンクfuga4</a> 33</div>

投稿2019/05/10 04:39

編集2019/05/10 07:23
yambejp

総合スコア114839

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

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

scoa

2019/05/10 06:14 編集

ありがとうございます。恐れ入りますが、.hoge以外のクラス(例えば.fuga)にスタイル追加したい場合はどのように記述すれば良いのでしょうか。
scoa

2019/05/10 07:39

説明不足で申し訳ございません。質問内容を修正しましたので、お手数ですが再度ご確認いただけますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問