2025年05月02日
jquery:attr()
このメソッドの説明
attr() はjQueryのメソッドです。
HTMLタグの「属性値」を取得したり、更新します。
また、prop()でも、HTMLタグの「属性値」を取得したり、更新できます。
違いは下記事例で解説します。
メソッド
セレクタ.attr( get_attr , set_attr )
パラメータ
get_attr (文字列)(必須)
取得/書き換えの属性名を指定します。
set_attr (文字列)(オプション)
書き換えたい属性の「値」を指定します。
戻り値
属性値の値が返ります
利用例
ここでは.attr()メソッドと.prop()メソッドの違いについて事例で説明します。
1.どちらを使っても良いケース
メモ
下記事例の様に『HTMLの中にある既定の属性値』を取得する場合は、.attr()メソッドと.prop()メソッドのどちらでも利用できます。
下記事例はHTMLの中にある target属性 と href属性 を取得する事例です。
・左のBOXをクリックすると『新しいタブ』に、このサイトのホームページが表示されます。
・右のBOXをクリックすると『現在のタブ』に、このサイトのホームページが表示されます。
よってこちらの場合は、ブラウザの戻るボタンでこの画面に戻ります。
| Warning: include_once(/sample/javascript/method/attr01): Failed to open stream: No such file or directory in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 Warning: include_once(): Failed opening '/sample/javascript/method/attr01' for inclusion (include_path='.:/usr/share/pear') in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 |
このプログラムは下記から構成されています。
<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で[現在のタブ]に履歴付きで表示しています。
2.attr()メソッドしか使えないケース
メモ
下記の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(',');
下記はHTMLの中にあるユーザが定義した option_val属性 と option_data属性 を取得する事例です。
下記のセレクトを操作して下さい
①まずは『選択してください』をクリックして、リストの内容を確認して下さい。
②次に『置換』ボタンを挿入してから①と同様に、リストの内容を確認して下さい。
この置換ボタンを挿入するとHTMLの中にある option_val 属性や option_data 属性の値を読み込んでセレクト値を変更しています。
③リセットボタンは、元のセレクト値に戻す処理が記述されています。
| Warning: include_once(/sample/javascript/method/attr02): Failed to open stream: No such file or directory in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 Warning: include_once(): Failed opening '/sample/javascript/method/attr02' for inclusion (include_path='.:/usr/share/pear') in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 |
上記のプログラムは下記から構成されています。
<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行目
リセットボタンが挿入されたら、元のデータを書き込んでいます。
3.prop()メソッドしか使えないケース
メモ
下記事例の様な 'selectedIndex'プロパティ は、HTMLの属性ではなく、javascriptが管理しているプロパティです。この場合はprop()しか使えません。
下記のセレクトを操作して下さい
①まずは『選択してください』をクリックして、選択値のどれかを選択して下さい。
②『リセットボタン』を押してください。①の選択値が解除されます。
| Warning: include_once(/sample/javascript/method/attr03): Failed to open stream: No such file or directory in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 Warning: include_once(): Failed opening '/sample/javascript/method/attr03' for inclusion (include_path='.:/usr/share/pear') in /volume1/web/school/wp-content/themes/my_template/functions.php on line 44 |
上記のプログラムは下記から構成されています。
<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にセットしています。