2022年04月24日

jquery:attr()

このメソッドの説明

attr() はjQueryのメソッドです。

HTMLタグの「属性値」を取得したり、更新します。

 

また、これと似ているが少し異なる.prop()メソッドもあります。

違いは下記事例で解説します。

 


メソッド

セレクタ.attr( get_attr , set_attr )

 


パラメータ

get_attr (文字列)(必須

取得/書き換えの属性名を指定します。

 

set_attr (文字列)(オプション)

書き換えたい属性の「値」を指定します。

 


戻り値

属性値の値が返ります

 


利用例

ここでは.attr()メソッド.prop()メソッドの違いについて事例で説明します。

1.どちらを使っても良いケース

※下記事例はPCの場合だけです。スマートデバイスには新しいタブの概念はありません。

下記はHTMLの中にある target属性href属性 を取得する事例です。

・左のBOXをクリックすると『新しいタブ』に、このサイトのホームページが表示されます。

・右のBOXをクリックすると『現在のタブ』に、このサイトのホームページが表示されます。

よってこちらの場合は、ブラウザの戻るボタンでこの画面に戻ります。

target属性 あり

mirai1

target属性 なし

mirai1

このプログラムは下記から構成されています。

<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://hnw.t-spirits.com/school' target = '_blank' ></a> 
		<img style='width:100%;' src='https://hnw.t-spirits.com/school/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://hnw.t-spirits.com/school'></a> 
		<img style='width:100%;' src='https://hnw.t-spirits.com/school/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_valoption_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()メソッドしか使えません。

 


関連情報

その他の 操作系メソッド も参照してください。

 

関数一覧
  • 1.JavaScript/jQueryとは
  • 2.[JS] 変数規則と文字連結
  • 3.[JS] if文
  • 4.[JS] 配列操作
  • 5.[JS] 文字列操作
  • 6.[JS] 画面情報&操作
  • 7.[JS] Timer処理
  • console.log()
  • for
  • for in
  • for of
  • indexOf()
  • join()
  • length
  • map()
  • match()
  • Object.keys()
  • Object.values()
  • parseInt()
  • pop()
  • push()
  • replace()
  • shift()
  • slice()
  • split()
  • toString()
  • unshift()
  • 1.jQueryの導入と記述の基本
  • 2.jQueryの機能追加
  • 3.jQuery文法
  • 4.階層構造の要素セレクトと操作
  • 5.要素サイズ取得メソッド
  • animate()
  • append()
  • attr()
  • change(func)
  • click()
  • click(func)
  • css()
  • each(func)
  • effect()
  • empty()
  • fadeTo()
  • get()
  • hover(f1,f2)
  • html()
  • map(func)
  • mousedown(func)
  • prop()
  • resize(func)
  • show()、hide()
  • slideToggle()
  • submit()
  • submit(func)
  • text()
  • toggle()
  • toggleClass()
  • val()