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

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

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

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

jQuery

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

HTML

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

Q&A

解決済

2回答

4795閲覧

特定のクラスがなければ、指定の要素を非表示にしたい

web

総合スコア24

HTML5

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

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

jQuery

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

HTML

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

1グッド

0クリップ

投稿2016/07/25 08:26

編集2016/07/25 08:33

HTML

1<div id="CCC"> 2 <table class="BBB"> 3 <tbody> 4 <tr> 5 <th>□□□</th> 6 <td class="close">○○○</td> 7 </tr> 8 <tr> 9 <th>□□□</th> 10 <td class="open">○○○</td> 11 </tr> 12131415 </tbody> 16 </table> 17 <div class="description row clearfix"> 18 <div class="col-xs-6 close_wrap"><span></span>定休日</div> 19 <div class="col-xs-6 open_wrap"><span></span>営業日</div> 20 </div> 21</div>

table内にtd.closeが一つもなければdiv.close_wrapを非表示に。
同じくtd.openがなければdiv.open_wrapを非表示に。
table内に一つでもあれば表示させたいです。

ちなみにwordpressのfront-page.phpに上記HTMLを入力しています。
試行錯誤して下記コードを試しましたがダメでした。。

jQuery

1jQuery(".open_wrap:not(:has(td.open))").hide();

どなたか教えて頂ければと思います。よろしくお願い致します。

kei344👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

jQuery(".open_wrap:not(:has(td.open))").hide();

この指定では、td.openを内包しない.open_wrapを.hide()、みたいになってしまいますね。

if($('table .close').length<1){ $('.close_wrap').hide(); } if($('table .open').length<1){ $('.open_wrap').hide(); }

ではどうでしょうか?
tableの中の.closeが1個より少ないとき(0のとき)、.close_wrapをhide()って感じです。

もう一つ、どうしてもセレクタでどうにかしたかったら、

jQuery("table:not(:has(td.open)) + .description > .open_wrap").hide();

としてみるのはどうでしょうか?

td.openを内包しないtableの 次の .descriptionの 子要素.open_wrapを hide()です。

投稿2016/07/25 08:40

編集2016/07/25 08:46
NatsumiOki

総合スコア1298

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

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

web

2016/07/25 08:54

回答ありがとうございます! すみません、すごく初歩的なことをお伺いするのですが・・ 教えて頂いたコードはどこに記述するのが良いのでしょうか?
NatsumiOki

2016/07/25 09:01

①jQueryの本体は読み込んでいますか? ②質問内容で提示したコードはどこに入れて試しましたか? もしかしてjQueryの使い方自体がわからないということでしょうか?
web

2016/07/25 10:02

ありがとうございます。 jQueryは読み込んでいます。 footer.phpのwp_footerより下に記述しましたが動きませんでした。
NatsumiOki

2016/07/25 12:11 編集

scriptのタグで囲んであるのであれば、 ``` <script> $(function(){ //ここにコード }) </script> ``` なのですが、WordPressということなので、動的にHTMLを生成している場合はうまくいかない可能性があります。 HTMLコードが出力されてレンダリングが終わったあとでないと、そもそも要素が存在しないからです。 ``` <script> jQuery(document).ready(function){ //ここにコード }); </script> ``` とすることで、HTML要素を読み込み終わった後で処理が走ります。
NatsumiOki

2016/07/25 12:21

すみません、ちょっと書き方が悪かったです。 <script> $(function(){ $(document).on('ready',function(){ //ここにコード }); }) </script>
web

2016/07/25 12:28

ありがとうございました!おかげで無事動作しました! ご丁寧に教えて頂いて本当に感謝です。 ありがとうございました。
guest

0

書かれたコードでは「.open_wrap」の中の「td.open」を内包していない要素を取得したいように見えます。単純に jQuery( 'table .open' ).length > 0 のようにして有無を確認するのはどうでしょう。

JavaScript

1jQuery( function() { 2 if ( jQuery( 'table .open' ).length > 0 ) { 3 jQuery( 'open_wrap' ).hide(); 4 } 5 if ( jQuery( 'table .close' ).length > 0 ) { 6 jQuery( '.close_wrap' ).hide(); 7 } 8} );

投稿2016/07/25 08:42

kei344

総合スコア69398

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

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

kei344

2016/07/25 08:43

あ、逆だったかも。
web

2016/07/25 11:35

回答ありがとうございます。 逆というのは、どういうことでしょうか・・!
kei344

2016/07/25 11:54 編集

( jQuery( 'table .open' ).length > 0 ) は「あるとき」なので、.hide() するのは「ないとき」だったかな、と思いまして。 if ( ! jQuery( 'table .open' ).length > 0 ) {} とすれば「ないとき」なので、そう書き換えればよいのですが、良い回答が既に付いていたのでそのままにしました。 コメントのやり取りの中で、「動かない」とかかれていますが、一度下記を試してみてください。 jQuery( function( $ ) { /* NatsumiOkiさんのコードを入れる */ } ); また、動かない場合は「デベロッパーツール(開発者ツール)」を使ってエラーを確認し、その情報を追記されるとよいと思います。(解決の手がかりになると思います) 【Web開発でよく使う、特に使えるChromeデベロッパー・ツールの機能 - Build Insider】 http://www.buildinsider.net/web/chromedevtools/01 【第1回 詳説:デベロッパーツールの使い方:Google Chrome版Firebug:デベロッパーツール取扱説明書|gihyo.jp … 技術評論社】 http://gihyo.jp/dev/feature/01/devtools/0001?page=2
web

2016/07/25 12:27

ありがとうございました! お二方のおかげで無事動作しました! 丁寧に教えて頂いて本当に感謝です。 教えて頂いた開発者ツールも使わせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問