2024年08月06日
jquery:attr()
このメソッドの説明
attr() はjQueryのメソッドです。
HTMLタグの「属性値」を取得したり、更新します。
また、これと似ているが少し異なる.prop()メソッドもあります。
違いは下記事例で解説します。
メソッド
セレクタ.attr( get_attr , set_attr )
パラメータ
get_attr (文字列)(必須)
取得/書き換えの属性名を指定します。
set_attr (文字列)(オプション)
書き換えたい属性の「値」を指定します。
戻り値
属性値の値が返ります
利用例
ここでは.attr()メソッドと.prop()メソッドの違いについて事例で説明します。
1.どちらを使っても良いケース
※下記事例はPCの場合だけです。スマートデバイスには新しいタブの概念はありません。
下記はHTMLの中にある target属性 と href属性 を取得する事例です。
・左のBOXをクリックすると『新しいタブ』に、このサイトのホームページが表示されます。
・右のBOXをクリックすると『現在のタブ』に、このサイトのホームページが表示されます。
よってこちらの場合は、ブラウザの戻るボタンでこの画面に戻ります。
このプログラムは下記から構成されています。
<div style='display:flex;'> <div class='url_box1' style='cursor:pointer ; border:1px black solid ; padding:10px ;width:50%;'> <p style='text-align:center;'>target属性 あり</p> <a href = 'https://school.t-spirits.com' target = '_blank' ></a> <img style='width:100%;' src='https://school.t-spirits.com/wp-content/uploads/2021/06/mirai.png' alt='mirai1'> </div> <div class = 'url_box2' style='cursor:pointer ; border:1px #000 solid ; padding:10px ;width:50%;margin-left:10px;' > <p style='text-align:center;'>target属性 なし</p> <a href = 'https://school.t-spirits.com'></a> <img style='width:100%;' src='https://school.t-spirits.com/wp-content/uploads/2021/06/mirai.png' alt='mirai1'> </div> </div> <script> $(function(){ $('.url_box1 , .url_box2').click(function(){ var Url = $(this).find('a').attr('href'); var Target= $(this).find('a').attr('target'); if(Target == '_blank'){window.open( Url );} else{location.href= Url;} }); }); </script>
■4行目と9行目
<a>タグの中にtarget属性とhref属性が設定されています。
■16~17行目
jQueryで<a>タグの中のtarget属性とhref属性の値を取得しています。
上記事例では.attr()で取得していますが、これを.prop()に変えても問題ありません。
■18行~19行目
target属性が'_blank'ならば、window.open()で[新しいタブ]に表示し、空白ならlocation.hrefで[現在のタブ]に履歴付きで表示しています。
メモ
この事例の様に『HTMLの中にある既定の属性値』を取得する場合は、.attr()メソッドと.prop()メソッドのどちらでも稼動します。
2.attr()メソッドしか使えないケース
下記はHTMLの中にあるユーザが定義した option_val属性 と option_data属性 を取得する事例です。
下記のセレクトを操作して下さい
①まずは『選択してください』をクリックして、リストの内容を確認して下さい。
②次に『置換』ボタンを挿入してから①と同様に、リストの内容を確認して下さい。
この置換ボタンを挿入するとHTMLの中にある option_val 属性や option_data 属性の値を読み込んでセレクト値を変更しています。
③リセットボタンは、元のセレクト値に戻す処理が記述されています。
|
上記のプログラムは下記から構成されています。
<span class='new_option' option_val='20,40,60' option_data='サイズ20,サイズ40,サイズ60'></span> <select class='option' name='select'> <option value='#none#'>選択してください</option> <option value='1'>項目1</option> <option value='2'>項目2</option> <option value='3'>項目3</option> </select><br> <button type='button' class='set' style='margin-top:10px;'>置換</button> <button type='button' class='reset' style='margin-top:10px;'>リセット</button> <script> $(function(){ $('.set').click(function(){ var option_val = $('.new_option').attr('option_val').split(','); // HTMLからオプション値を取得し配列化 var option_data = $('.new_option').attr('option_data').split(',');// HTMLからオプションラベルを取得し配列化 var count = option_val.length; // 上記の配列個数を取得 $('.option').empty(); // ターゲットのオプションを空にする $('.option').append('<option value="#NONE#" selected="selected">選択してください</option>'); // オプション値を書き込む for (var i=0; i<count; i++) { $('.option').append('<option value="'+ option_val[i] + '">' + option_data[i] + '</option>'); }//forの終了 }); $('.reset').click(function(){ $('.option').empty(); // ターゲットのオプションを空にする $('.option').append('<option value="#NONE#" selected="selected">選択してください</option>'); $('.option').append('<option value="1" >項目1</option>'); $('.option').append('<option value="2" >項目2</option>'); $('.option').append('<option value="3" >項目3</option>'); }); }); </script>
■1行目
セレクト値を変更したいデータをHTMLで記述しています。
■2~9行目
通常のセレクト文です。
■12~22行目
更新ボタンが挿入されたら、変更したい値をattrで読み込んで、変更しています。
■23~29行目
リセットボタンが挿入されたら、元のデータを書き込んでいます。
メモ
HTMLの中にある属性値でも下記の様な option_val や option_data は、ユーザが勝手に定義した属性値です。
<span class='new_option' option_val='20,40,60' option_data='サイズ20,サイズ40,サイズ60'></span>
これを読み取るのはattr()メソッドしか使えません。
var option_val = $('.new_option').attr('option_val').split(','); var option_data = $('.new_option').attr('option_data').split(',');
3.prop()メソッドしか使えないケース
下記のセレクトを操作して下さい
①まずは『選択してください』をクリックして、選択値のどれかを選択して下さい。
②『リセットボタン』を押してください。①の選択値が解除されます。
|
上記のプログラムは下記から構成されています。
<select class='option' name='select'> <option value='#none#'>選択してください</option> <option value='1'>項目1</option> <option value='2'>項目2</option> <option value='3'>項目3</option> </select><br> <button type='button' class='reset' style='margin-top:10px;'>リセット</button> <script> $(function(){ $('.reset').click(function(){ $('.option').prop('selectedIndex', 0); // セレクト値を0番目に変更しています。 }); }); </script>
■11行目
'selectedIndex'プロパティを0にセットしています。
メモ
リセットボタンで利用している 'selectedIndex'プロパティ は、HTMLの属性ではなく、javascriptが管理しているプロパティです。
この場合はprop()メソッドしか使えません。