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

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ブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

6501閲覧

optionタグにつけた「data-val=""」をjsで取得する

Yariii

総合スコア61

HTML5

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

WordPress

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

JavaScript

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

0グッド

0クリップ

投稿2020/05/09 05:31

WPでカテゴリ一覧をselectタグでプルダウン表示させていて、
選んだ項目に、まだ投稿がなかった場合、「現在投稿がありません」というメッセージを表示させたいです。

そのために、selectタグで選択されたoptionを、jsにて取得したいですが、optionのvalue属性は渡せるのですが、「投稿数」を入れているoptionの「date-val="〇〇"」を取得できずに困っています。

php

1 <div class="Search_form_cat_list"> 2 <select name="parent" class="parent"> 3 <option value="">選択してください</option> 4 <!--カテゴリの2階層のみを取得--> 5 <?php 6 $categories = get_terms('category',array('get'=>all,'parent'=>34)); 7 foreach($categories as $category) : 8 ?> 9 <option value="<?php echo $category->term_id; ?>" name="areanum[]" data-val="<?php echo $category->count; ?>"><?php echo $category->name; ?></option> 10 <?php endforeach; ?> 11 </select> 12 </div> 13 14     <p class="commingsoon">投稿はまだ登録されていません。</p> 15

js

1 2 let parent = $('.Search_form_cat_list .parent'); 3 let children = $('.Search_form_cat_list.children'); 4 let original = children.html(); 5 let commingsoon = $('.commingsoon'); 6 7 parent.change(function(){ 8 let parentVal = $(this).val(); 9 let parentCount = $(this).data('val'); 10 let count = $(this).find('option').data('val'); 11 12  //ここでdate-val属性をテスト確認としてコンソールに表示させているが、「undefined」と出てくる 13 console.log(count); 14 15 children.html(original).find('label').each(function(){ 16 let childrenVal = $(this).data('val'); 17 18 if(childrenVal == parentVal){ 19 $(this).show(); 20 }else{ 21 } 22 }); 23 24 if (parentCount == 0) { 25 commingsoon.show(); 26 } else { 27 commingsoon.hide(); 28 } 29 30 }); 31

jsのコードにもコメントしましたが、optionタグのdate-val属性を取得できているかconsol.logで確認したところ、コンソールでは「undefined」と出てきて、上手く取得できない状態です。

原因はなんでしょうか?どのように書くと解決できるかご教授いただけると幸いです。
よろしくお願い致しますm_ _m

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

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

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

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

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

guest

回答2

0

let parentCount = $(this).data('val');となっていますが、ここでのthis<select>の方です。<option>に付いているdata-valとはひも付きません。

投稿2020/05/09 05:35

maisumakun

総合スコア145183

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

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

0

ベストアンサー

js

1let count = $(this).find('option:selected').data('val');

【【jQuery】フォーム部品の取得・設定まとめ - Qiita】
https://qiita.com/kazu56/items/36b025dac5802b76715c#選択された項目optionのvalue値取得

投稿2020/05/09 05:37

kei344

総合スコア69398

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

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

Yariii

2020/05/09 06:09

ありがとうございます!解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問