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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

Q&A

解決済

2回答

1553閲覧

特定の子要素を持つ箇所のみ、javaScriptまたは、phpでの条件分岐

pasomtr

総合スコア20

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2019/04/21 06:49

編集2019/04/21 08:55

現在WordPressの開発において行き止まってしまい、
解決策を調べたのですが、なかなか目的の挙動ができず、
この度、皆様にアドバイス頂戴できましたら幸いです。

前提・実現したいこと

行いたいことは、javaScriptの条件分岐でclassの出し分けです。
class="lien-1"の子要素に<br>がある場合class="lien-2"を追記するという内容です。

####出力したい内容
※以下は2つの<tr>要素にしていますが、実際は複数の<tr>要素がございます。

<tr> <th>タイトル</th> <td> <p class="line-1">テキストエリアテキストエリア</p> </td> </tr> <tr> <th>タイトル</th> <td> <p class="line-1 line-2">テキストエリア<br>テキストエリア</p> </td> </tr>

###問題

問題は該当の条件がある場合、すべてのline-1にline-2が付与されてしまうということです。

###実際に出力される内容

<tr> <th>タイトル</th> <td> <p class="line-1 line-2">テキストエリアテキストエリア</p> </td> </tr> <tr> <th>タイトル</th> <td> <p class="line-1 line-2">テキストエリア<br>テキストエリア</p> </td> </tr>

###現在の記述方法

カスタムフィールドを使用しており、管理画面から入力したポストを以下のように出力しています。

<?php global $post; $args = array( 'posts_per_page' => 100 ); $myposts = get_posts( $args ); foreach( $myposts as $post ) { setup_postdata($post); ?> <tr> <th>タイトル</th> <td> <p class="line-1"><?php the_field('text-area'); ?></p> </td> </tr> <?php } wp_reset_postdata(); ?>

###カスタムフィールドの設定
カスタムフィールドでフィールドエリアをテキストエリアに設定しています。
ですので、管理画面の入力に改行が入ると出力の際に<br>が付与されます。
この<br>付与された場合に

<p class="line-1">

<p class="line-1 line-2">

として、クラスを付与されるよう
###jqueryの記述

$(function(){ $('.line-1').find('br').each(function(){ if($('p .line-1').has('br')) { $(".line-1") .addClass("line-2");//class名追加 } else {} }); });

上記にて条件分岐を書きました。

しかし上記の場合、
line-1の子要素にbrがある場合、すべてのline-1にline-2が付与されてしまいます。

これを、line-1の子要素にbrがあるline-1にのみline-2を付与させるとして記述をしたいのです。

助けてください。。。お願いします。。。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/04/21 08:40

:first-line ってのが css にあるのだけれど、知ってる?
pasomtr

2019/04/21 08:48

ご回答ありがとう御座います。 :first-lineについて調べて見ました。 問題は条件分岐での出し分けなのですが、 一個目とか二個目にというわけでなく、 brがある場合その親要素に適応するという条件分岐をしたく、 phpで投稿を取得して出力するので、どの位置にbrが来るかは、前提では判別が出来ません。 :first-lineに関して深く知識があるわけでないので、見当違いな発言をしていましたら申し訳ございません。
guest

回答2

0

ベストアンサー

class="lien-1"の子要素に<br>がある場合class="lien-2"を追記するという内容です。

JavaScript

1jQuery(".line-1:has(>br)") .addClass("line-2");

Re: pasomtr さん

投稿2019/04/21 09:06

think49

総合スコア18164

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

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

pasomtr

2019/04/21 09:24

think49様 ありがとう御座います!!!正常に動作しました! 本当に感謝申し上げます。
guest

0

</body>の直前にでも置く ```javascript [...document.querySelectorAll('p.line-1')].forEach(p=>p.querySelector('br')&&p.classList.add('line-2'));

投稿2019/04/21 09:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

pasomtr

2019/04/21 09:27

hai_hai様 すぐのご返答ありがとうございました! すぐに構文を記述頂けましたこと感謝申し上げます!! ずっと悩んでいたのでお力添え頂け本当に心が開放されました。。。 ありがとう御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問