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

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

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

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

ポップアップ

一般的に、ポップアップは、ウィンドウやアプリケーションに上に浮かぶUIエレメントを指します。

jQuery

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

HTML

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

Q&A

解決済

2回答

1493閲覧

クリックされたら要素を表示したいが、2回目以降のクリックで表示されない

iambeginnerr

総合スコア12

WordPress

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

ポップアップ

一般的に、ポップアップは、ウィンドウやアプリケーションに上に浮かぶUIエレメントを指します。

jQuery

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

HTML

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

0グッド

0クリップ

投稿2021/09/09 06:28

前提・実現したいこと

絞り込み検索画面で、CSSのみでポップアップを実装中です。
ポップアップが開き、項目を選択したら「前画面に戻る」ボタンで戻る仕様で、何度もポップアップを開くことができる仕様にしたいです。

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

一度ポップアップを開き項目を選択し、前画面に戻ってから、2度目にポップアップを開こうとすると開くことができません(最初の一回しかポップアップを開くことができません)。
どこがおかしいのでしょうか...
jQueryについてあまり詳しくないもので、修正箇所をご指摘いただければと思います。
どうぞよろしくお願いいたします!

該当のソースコード

HTML
↓都道府県名の.sf-level-1をクリックすると、子カテゴリであるul.childrenがポップアップで表示されます。
(この検索フォーム自体がモーダルで表示されています)

<!-- モーダルエリアここから --> <section id="modalArea" class="modalArea"> <div id="modalBg" class="modalBg"></div> <div class="modalWrapper"> <div class="modalContents"> <h3>絞り込み検索</h3> <form> <!-- 他項目は省略いたします --> <ul> <li class="sf-field-taxonomy-area_cat"> <h4>都道府県または市区町村を選択(複数選択可)</h4> <ul data-operator="or" class=""> <li><input class="sf-input-checkbox" type="checkbox" value="saitama" name="_sft_area_cat[]" id="area1"><label class="sf-label-checkbox" for="area1">埼玉県<span class="sf-count">(283)</span></label> <ul class="children"> <li class="sf-level-1><input class="sf-input-checkbox" type="checkbox" value="saitamasi" name="_sft_area_cat[]" id="area-c-1"><label class="sf-label-checkbox" for="area-c-1">さいたま市<span class="sf-count">(67)</span></label></li> <li class="sf-level-1><input class="sf-input-checkbox" type="checkbox" value="kawagoeshi" name="_sft_area_cat[]" id="area-c-2"><label class="sf-label-checkbox" for="area-c-2">川越市<span class="sf-count">(67)</span></label></li> <li class="sf-level-1><input class="sf-input-checkbox" type="checkbox" value="koshigayashi" name="_sft_area_cat[]" id="area-c-3"><label class="sf-label-checkbox" for="area-c-3">越谷市<span class="sf-count">(67)</span></label></li> </ul> </li> <li class="sf-field-submit" data-sf-field-name="submit" data-sf-field-type="submit" data-sf-field-input-type=""><input type="submit" name="_sf_submit" value="検索"></li><li class="sf-field-reset" data-sf-field-name="reset" data-sf-field-type="reset" data-sf-field-input-type="button"><input type="submit" class="search-filter-reset" name="_sf_reset" value="リセット" data-search-form-id="19154" data-sf-submit-form="never"></li> </ul> </form> </div> </div> </div> </section>

CSS

ul.children { display: none; } input.sf-input-checkbox:checked ~ ul.children { display: flex; }

jQuery

//プラグイン使用のためhtmlを編集できないので、戻るボタンをここで挿入しました $('ul.children').append('<p id="close">前画面に戻る</p>'); //戻るボタンを押したらul.childrenが非表示になるようにしました $(function () { $('p#close').on('click', () => { $('ul.children').hide(); }); });

補足情報(FW/ツールのバージョンなど)

wordpress使用
検索システムはserch&filter proというプラグインを使用
このプラグインをCSS等でカスタマイズしているという状況です。

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

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

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

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

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

yambejp

2021/09/09 06:40

「CSSのみでポップアップを実装中」とありますがjQueryは 使っていいのでしょうか? jQuery-uiでdialog処理は検討していませんか?
iambeginnerr

2021/09/09 06:48

ご質問ありがとうございます。 jQueryを使用してもいいのですが、CSSのみでの実装を考えたのには訳がありまして、 1、htmlを編集できないのでこちらでID等を指定することが難しく断念しました 2、モーダル上にjQueryでモーダルを重ねたところ、挙動がおかしくなったため(私の書き方がいけなかったのだと思いますが)断念しました という理由です。 時間があまりなかったため、なるべく大きく変更をせずに解決するには、投稿した方法が良いのかな?と、こちらの方法で進めていました。 ですが、こちらの方法で解決できなければ検索フォームのモーダル部分から全てjQueryで修正も検討しております!
guest

回答2

0

自己解決

少し無理矢理ですが、CSSでul.childrenが開いたら対応しているlabelを背景全体に広げ、クリックされたら閉じる仕様にしました。

投稿2021/09/13 00:58

iambeginnerr

総合スコア12

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

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

0

$('ul.children').hide();ul.childrenが非表示になった後は、当然、その子要素の.sf-level-1を二度と選択できない状態になっているのではないですか?

投稿2021/09/09 06:34

itagagaki

総合スコア8402

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

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

iambeginnerr

2021/09/09 06:40

回答いただきありがとうございます。 $('ul.children').hide();でul.childrenが非表示になった後の処理等は、特に何も記載していないのですが、何か記載すべきなのでしょうか?!
itagagaki

2021/09/09 06:47

再び選択をすることを可能にするためには、(それを可能にしてよいというタイミングで) $('ul.children').show(); する必要があると思います。
iambeginnerr

2021/09/09 06:56 編集

なるほどです、 $(function () { if ($('ul.children').css('display') == 'none') { $('ul.children').show(); } else { $('ul.children').hide(); } }); }); と記載してみたのですが、検索フォームのモーダル自体開けなくなってしまいました。 (それを可能にしてよいというタイミングで)=「ul.childrenを一度閉じたら」というタイミングになるかと思いますが、どのように指定したら良いでしょうか。
itagagaki

2021/09/09 10:01

チェックされたまま ul.children の表示が消えた状態にするというのがそもそも破綻しているように思います。 $('ul.children').hide(); の代わりに $('input.sf-input-checkbox').prop("checked", false); で非選択状態に戻せばよくないですか?
iambeginnerr

2021/09/10 01:11

教えていただいた通り、propを使用してみました!二回目以降も問題なくポップアップを開けるようになったのですが、ul.children内のcheckもfalseになってしまい、絞り込み検索として機能しなくなってしまいました。
itagagaki

2021/09/10 02:26

設計に破綻がある気がしますので、まずは一度、図でも表でもいいので、UIによる状態の移り変わりをシミュレーションして、どういった操作でどんな状態になるべきか、設計し直してみるといいと思います。
iambeginnerr

2021/09/13 00:56

お返事ありがとうございます。 確かに、途中からjQueryの使用を始めたりして、元々の設計とは違ったためjQuery使用での実現は難しくなてしまいました。ですので、少し無理矢理ではありますが、CSSのみでul.childrenを閉じるように修正をしました。この度は親身にお付き合いくださりありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問