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

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

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

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

Q&A

解決済

2回答

3225閲覧

jQuery チェックボックスに連動して、a要素にあるtitle属性を非表示・表示を切り換えたい。

hdahrn

総合スコア36

jQuery

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

0グッド

0クリップ

投稿2016/11/01 00:24

jQueryにおいて、チェックボックスのチェックありなしに連動して、a要素にあるtitle属性を非表示・表示を切り換える処理を行いたいと考えています。そのときに、id=no-1のチェックボックスをチェックすると、a要素のclass="no-1"がついたa要素のtitle属性を表示/非表示するように動作させたいと考えています。

html

1<input type="checkbox" value="no-1" id="no-1">no-1 2<input type="checkbox" value="no-2" id="no-2">no-2 3<input type="checkbox" value="no-3" id="no-3">no-3 4 5<a href="#" title="" target="_blank"class="no-1"></a> 6<a href="#" title="" target="_blank"class="no-1"></a> 7<a href="#" title="" target="_blank"class="no-1"></a> 8<a href="#" title="" target="_blank"class="no-1"></a> 9<a href="#" title="" target="_blank"class="no-1"></a> 10<a href="#" title="" target="_blank"class="no-2"></a> 11<a href="#" title="" target="_blank"class="no-2"></a> 12<a href="#" title="" target="_blank"class="no-2"></a> 13<a href="#" title="" target="_blank"class="no-2"></a> 14<a href="#" title="" target="_blank"class="no-2"></a> 15<a href="#" title="" target="_blank"class="no-3"></a> 16<a href="#" title="" target="_blank"class="no-3"></a> 17<a href="#" title="" target="_blank"class="no-3"></a> 18<a href="#" title="" target="_blank"class="no-3"></a> 19<a href="#" title="" target="_blank"class="no-3"></a> 20

一応自分でも考えてソースを書いてみたのですが、何度やっても上手くいきません。
私の書いたソースは以下のとおりです。
とりあえずチェックボックスのうち一つ分に関して、書いてみたのですが、何が違うのでしょうか?

jquery

1$(function() { 2 $("#no-1").on("change", function() { 3 $(".no-1").each(function() { 4 var title = $(this).attr("title"); 5 if ($(this).attr("title") == title) { 6 $(this).attr("title", ""); 7 } else if ($(this).attr("title") == "") { 8 $(this).attr("title", title); 9 } 10 }); 11});

私の方で確認するに、$(this).attr("title");において、titleの値が取れておらず空になってしまうため、上手く作動しないものだと考えています。

もしどなたか良い書き方をご存じでしたらご教授お願い致します。
宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こんな感じでしょうか?

javascript

1$(function(){ 2 $('.no-1,.no-2,.no-3').each(function(){ 3 $(this).data('title',$(this).attr('title')); 4 }); 5 $('#no-1,#no-2,#no-3').on('change',function(){ 6 var flg=$(this).prop('checked'); 7 $('.'+$(this).prop('id')).each(function(){ 8 $(this).attr('title',flg?'':$(this).data('title')); 9 }); 10 }).change(); 11});

投稿2016/11/01 02:51

yambejp

総合スコア114829

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

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

hdahrn

2016/11/01 23:19

回答ありがとうございます。 しっかり目的の動作になっておりました! 使ったことのないメソッドもあり、大変勉強になりました。 この度は本当にありがとうございました。 深く感謝申し上げます。
guest

0

目的は
target="_blank"class="no-1">あ</a>
の部分の"あ"ではなく
<a href="#" title="あ"
のtitle="あ"部分の書き換えがいたいという事でよいですか?

このスクリプトではまず最初にチェックボックスにチェックをいれると
title="あ"title=""
になりますが、次にチェックをはずすと

var title = $(this).attr("title");
の値は空になりますので

titleの値が取れておらず空になってしまうため、

になっています。'あ'、とか'い'とかをつけたり消したりしたいのであれば、この場合、titleと<a>タグではさまれた文字を比較してみては?

投稿2016/11/01 00:47

hiim

総合スコア1689

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

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

hdahrn

2016/11/01 23:27

回答ありがとうございます。 私のわかりにくい質問の意図を汲み取ってくださり、 なぜ間違えているのかを指摘していただき、 理解できました。 また、より良いアプローチ方法を指南していただき、 次に考える方向性を見出すことができました。 しかし、残念ながら私の方ではhiim様のアプローチ方法では、自分で目的のものを組むことができませんでした。本当に私の勉強不足で申し訳ない限りです。 この件につきましては、できるまで挑戦したいと思います。 質問して早くに回答してくださったこと本当にうれしく思います。 ありがとうございました。 深く感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問