WEBデザイン・プログラミング関連の
情報発信を手掛ける STAND4U

HOME > WEB制作 > javascript > jQuery「attr」で属性値を取得/設定する方法

jQuery「attr」で属性値を取得/設定する方法

[景品表示法に基づく表記] 本コンテンツにはプロモーションが含まれています。

jQueryのメソッド「.attr() 」は、要素の「属性値を取得/設定する」事ができるメソッド。

今回は、jQueryで「属性値を取得/設定できる」メソッド「.attr()」について、その使い方をサンプルを交えて解説しよう。

属性、属性値とは?

.attr()で属性の値を取得できるという事だが、「属性」とは何を指すのか?

例えば、次のHTMLで属性にあたるものはどれだろうか?

<ul id="nav">
 <li class="current"><a href="https://test.com" target="_blank">リンク1</a></li>
</ul>

属性

このHTMLで「属性」にあたるものは、idclasshreftargetなどである。

属性値

idの属性値はnavclassの属性値はcurrent、hrefの属性値はhttps://test.comtargetの属性値は_blankということになる。

.attr()と.prop()の違いは?

.attr()は「属性」、.prop()は「プロパティ」を操作できるメソッドで、ほとんど同じような働きをする。

属性・プロパティとは

「属性」はHTMLの情報で、「プロパティ」は「JavaScriptが独自に保持するHTMLの属性情報」で、基本的には同じ内容の情報なのだが、次の例のように一部異なるものがある

.attr()はHTML属性を取得・設定できるメソッドで、「実行時点でHTMLコードに記述されている情報」しか取得できないので、フォームのcheckeddisabledselectedmultipleなどユーザーの操作後の値を取る事はできなかった

そこで、jQuery1.6より新たに、JavaScriptが保有する「プロパティ」を操作できる.prop()メソッドが追加されたのだ。

例えば次のようなチェックボックスで初期値でチェックが入っていないものを.prop().attr()でそれぞれ値を取得してみると

<input type="checkbox" >

.prop()は「false」と返すのに対して、.attr()では「undefined」と返す。

その後、ユーザーがチェックを入れた後に同じ様に.prop().attr()でそれぞれ値を取得してみると、.prop()は「true」と返すのに対して、.attr()では、チェックが入っているのにも関わらず、また「undefined」と返してしまう(ユーザーがチェックを入れてもHTMLが書き換わるわけではない為)。

つまり、フォーム関連やcheckeddisabledselectedなどの場合は、.attr()ではなく、.prop()を使って操作すると良いという事だ。

.prop()メソッドについて詳しく知りたい方はこちらの記事をどうぞ。

.attr()の構文

.attr()では属性値を「取得」と「設定」ができる。また、「一度に複数の属性の値」を設定する事もできるので、順番に解説していこう。

属性値を取得する構文

.attr()で属性値を取得する構文
$("セレクタ").attr("属性名");

セレクタで指定した要素に対して.attr()のパラメータで「属性名」だけを記述した場合は、その属性値を取得できる。

ただし「取得」した値を、後で使う場合は、次のように変数に格納すると良い。

var hoge = $("a").attr("src");

属性値を設定する構文

.attr()で属性値を設定する構文
$("セレクタ").attr("属性名","属性値");

属性値を変更したい要素を「セレクタ」で指定し、.attr()のパラメータの第1引数で「属性名」、さらに,で区切った後の第2引数で「属性値」を指定する事で、指定要素の「属性値」を変更する事ができる。

一度に複数の属性値を設定する構文

.attr()で複数の属性値を設定する構文
$("セレクタ").attr({属性名:"値",属性名:"値",属性名:"値"});

一度に複数の属性の値をセットする場合はオブジェクト形式で{}の中で属性名:"値",の組み合わせを複数設定する事ができる!

jQueryで.attr()を使って属性値を取得して、その値を設定する例

まずaタグのhrefの値を取得して、その値を別のaタグに設定する例で見ていこう。

jQuery
$(function(){
 var seturl = $("#nav a").attr("href");
 $("#set a").attr("href", seturl);
});
HTML (jQuery反映前)
<div id="nav">
 <a href="https://www.yahoo.co.jp/">リンク1</a>
</div>
<div id="set">
 <a href="https://www.msn.com/ja-jp">リンク2</a>
</div>

HTML (jQuery反映後)
<div id="nav">
 <a href="https://www.yahoo.co.jp/">リンク1</a>
</div>
<div id="set">
 <a href="https://www.yahoo.co.jp/">リンク2</a>
</div>

このように書く事で$("#nav a")の「hrefの値」を、一旦変数seturlに格納した上で、さらに$("#set a")の「hrefの値」をhttps://www.msn.com/ja-jpからhttps://www.yahoo.co.jp/に変更することができる。

jQueryで.attr()を使って、一度に複数の属性値を設定する方法

一度に複数の属性値を設定する例として、aタグのhreftargetclassの3つの値を設定する例で見ていこう。

jQuery
$(function(){
 $("#set a").attr({href:"https://www.yahoo.co.jp/", target:"_blank",class:"other"});
});
HTML (jQuery反映前)
<div id="set">
 <a href="https://www.msn.com/ja-jp">リンク</a>
</div>

HTML (jQuery反映後)
<div id="set">
 <a href="https://www.yahoo.co.jp/" target="_blank" class="other">リンク1</a>
</div>

このように書く事で、aタグのhreftargetclassの3つの値を一度に設定する事ができる!

属性を削除する方法

.attr()とは逆に「属性を削除」する場合は、.removeAttr()メソッドを使う事になる。

.removeAttr()についてはこちらの記事を参考にしよう。

フロントエンドスキルをもっと早く・簡単にマスターしたい方へ!

JavaScriptやCSS・Sassなどフロントエンド学習は、初心者が「独学」で完全マスターするには半年以上かかり、相当根気よくやらないと挫折してしまうか、ライバルに出遅れてしまう…。

短期間でフロントエンド・WEBデザインをマスターするには?

私の経験だが、手軽なオンラインスクールを利用した方が圧倒的に早かった。独学だと「何からどこまで勉強すれば良いかわからない」ものを、これだけ学習すればOKというポイントをおさえた教科書で学習しながら、わからない点を質問し放題なので、多少の出費は必要だが2ヶ月程度でサクッと学べたので逆に経済的だった!(実際に私がオンラインスクールを受講して体感

では「オススメはどのスクール?」とよく聞かれるのだが、たった1つのおすすめスクールがある訳でなく、その人によって最適なスクールが違う

スクール選びのポイント
  • 学習スタイルが自分に合っているか?
  • 低価格でコスパの良い学習料金か?
  • 講師に質問しやすい環境か?
  • 無料体験できるスクールか?

数あるスクールの中から、実際に受講してわかった事や現役プロならでは目線で厳選・比較したこちらの記事「現役プロ比較!短期 「WEBデザインスクール12校」おすすめランキング!」を参考に自分に合ったスクールを探そう↓

jQuery「attr」で属性値を取得/設定する方法のまとめ

以上、jQueryで「.attr()を使って、属性値を取得/設定する」方法でした。

その他のjQueryメソッドについて確認したい方は、jQueryメソッドを一覧で解説したこちらの記事を確認しておこう!


※当記事の掲載内容は執筆現在の個人の見解・調査によるもので、動作・サービス等を保証するものではありません。最新情報は各公式サイトでご確認頂き、購入・契約・データ作成等はご自身の判断・責任でお願いします。 免責事項

関連記事

この記事を書いた人

編集長

WEBデザイン・グラフィックデザイン歴:約18年、HTMLコーディング、jquery、wordpress、イラストなど本業とし、WEBデザインコンサル・プログラミング・ライティング等にも勤しんでいます

プロフィールはこちら

Twitter @stand_4u_ をフォロー

新着記事