jQueryのattr()メソッドの使い方徹底解説!属性操作をマスターしよう!

jQueryのattr()メソッドの使い方徹底解説!属性操作をマスターしよう!
  • URLをコピーしました!
悩む人

jQueryの attr() ってよく見るけど、正直よく分からない…

そんな風に感じたことはありませんか?

属性を操作するって聞いても、そもそも「属性」って何?という状態では、なかなかスムーズに理解できませんよね。

この記事は、jQueryでHTMLの属性を操作したい初心者〜中級者の方に向けて、attr() メソッドの使い方を 基礎から丁寧に解説していきます。

悩む人

コードを見ても動きの意味がイマイチ掴めない

悩む人

実際の使い方を知りたい

という方にとって、実践的な知識が詰まった内容になっています。

この機会に attr() メソッドの本質をしっかり掴んで、ワンランク上のjQueryスキルを身につけてみませんか?

この記事でわかること
  • HTMLの「属性」がどういうものかが明確にわかる
  • attr() を使った取得・変更・追加・削除の方法がマスターできる
  • よく混乱されがちな prop() との違いまで理解できる
この記事を書いた人
  • フリーランスWEBクリエイターとして10年の活動実績。WEB制作歴トータル17年。
  • 要件定義からデザイン・コーディングまで全て担当。
  • Webサイト、LPの制作数、延べ100サイト以上。
  • 個人での売上1300万円超えを機に法人化
  • 現在は株式会社Spring DAY代表、兼クリエイティブディレクターとして現役活動中
かすがです
目次

jQueryのattr()メソッドとは?

jQueryを使ってHTML要素を操作する際、頻繁に登場するのが attr() メソッドです。

初心者の方からすると

悩む人

属性って何?

悩む人

どう使うの?

という疑問も多いでしょう。

しかし、このメソッドを使いこなせば、動的で柔軟なWebサイト作りが可能になります。

ここでは、attr()メソッドの基本的な役割や、なぜ重要なのかをわかりやすく解説していきます。

attr() メソッドは、HTML要素の「属性(attribute)」を取得・設定するための便利な関数です。

たとえば、リンクの href 属性や画像の src 属性、入力フィールドの value などが該当します。

これらの属性にアクセスすることで、JavaScriptだけでは少し手間がかかる処理を、簡潔に記述できるのがjQueryの魅力の一つです。

また、attr() を使えば、静的なHTMLコードを、ユーザーのアクションに応じて動的に変化させることも可能です。

例えば、画像にマウスオーバーした際に画像のソースURLを変更して、画像を切り替える、といったインタラクティブなUIの構築にも活用されます。

これから具体的な使用方法に入り、attr() メソッドの活用方法を一つずつ見ていきましょう。

HTMLの属性とは?

jQueryのattr()メソッドを理解するには、まず「HTMLの属性」そのものを正しく把握しておくことが重要です。

属性は、HTMLタグにさまざまな情報を持たせるために使われますが、初心者のうちはつい曖昧に理解してしまいがちです。

ここでは、HTMLの属性がどういった役割を果たしているのか、なぜWeb開発に欠かせないのかを具体的に解説していきます。

HTMLの属性(attribute)とは、HTMLタグに付加情報を与えるための仕組みです。タグの中に記述され、属性名=”値” という形式で指定します。

たとえば、以下のようなコードを見てみましょう。

<a href="https://example.com" target="_blank">リンク</a>

この場合、href はリンク先のURLを示す属性であり、target はリンクをどのウィンドウで開くか決める属性です。

これらの属性によって、タグの「意味」や「振る舞い」が決定されるわけです。

他にも、idclasssrcaltvalue など、さまざまな種類の属性が存在します。

各属性はHTMLの仕様に基づいて設計されており、適切に使用することでSEOやアクセシビリティの向上にもつながります。

つまり、HTMLの属性は、Webページの構造や動作、さらにはユーザー体験にも関わる非常に重要な要素です。

これらを動的に操作できるということは、それだけでWebサイトに多くの表現力を与えられるということになります。

次に、実際にjQueryのattr()メソッドを使って、属性をどのように操作できるのかを詳しく見ていきましょう。

attr()メソッドで属性を操作する

HTMLの属性がどのような役割を持つのかを理解したところで、ここからは jQuery の attr() メソッドを使って、実際に属性を操作する方法について詳しく見ていきましょう。

一連の操作を覚えることで、Webページのインタラクションがより自由自在になります。

かすが

初心者の方でもわかりやすいように、具体例を交えて、順を追って解説していきますので、安心してくださいね。

1.属性の取得

まず最初に押さえておきたいのが、「属性の取得」です。

対象の要素が持っている属性値を確認することで、次の操作に繋げることができます。

var link = $('a').attr('href');
console.log(link); // => https://example.com

上記のように、セレクタで要素を取得し、そのまま attr('属性名') を指定するだけで、対象の属性の値を簡単に取得できます。

リンクのURLや画像のパスなどを取得し、ログに表示する、といった処理に便利です。

2.属性の変更

次に、「属性の変更」についてです。既存の属性を別の値に更新したい場合、attr() に第二引数を渡すだけでOKです。

$('img').attr('src', 'new-image.jpg');

このように書くことで、対象の画像要素の src 属性が、新しい画像ファイルに差し替わります。

ユーザー操作やイベント発生時に属性を切り替える場面で、非常に活躍します。

3.属性の追加

HTML要素に新しく属性を追加したい場合も、属性の変更と同じく attr() に第二引数を渡すだけでOKです。

属性がすでに存在する場合は変更になり、存在しない場合は自動的に追加されるのがjQueryの便利なポイントです。

$('img').attr('alt', 'new-image');

画像のaltも属性なので追加可能です。必要に応じて適切に設定しましょう。

4.複数の属性を設定

複数の属性を一度に設定したい場合は以下のようにします。

$('a').attr({
  href: 'https://new-url.com',
  title: '新しいリンク先'
});

このように書けば、リンクの hreftitle を同時に設定できます。コードがスッキリするだけでなく、複数の属性を変更する際のミスも防げます。

属性の削除(removeAttr)

最後に、不要になった属性を削除する方法についても触れておきましょう。

attr() メソッドでは削除はできないため、ここでは removeAttr() を使います。

$('a').removeAttr('target');

このコードは、リンクの target 属性を削除します。


このように、jQueryの attr() を使えば、HTMLの属性操作を非常にシンプルに、かつ柔軟に行うことができます。

次に、似たような役割を持つ prop() メソッドとの違いについても解説していきます。

jQueryのattrとpropの違いは?

jQueryで属性を操作していると、attr() だけでなく prop() というメソッドにも出会います。

どちらも「属性を取得・設定する」ように見えるため、

混乱する人

この2つは何が違うの?

と混乱する方も少なくありません。

実際には、用途によって使い分けが必要であり、場面によって適切なメソッドを選ばないと、思ったような動作をしない場合もあります。

ここでは attr()prop() の違いを具体例を交えながら解説し、使い分けのポイントを明確にします。

attr()は「HTML属性」にアクセス、prop()は「DOMプロパティ」にアクセス

まず基本的な違いは以下の通りです。

  • attr() は HTML属性(HTMLタグに書かれている内容)を対象にします。
  • prop() は DOMプロパティ(ブラウザ上で動的に保持される状態)を対象にします。

一見ややこしく感じますが、具体的な例を見ると理解が深まります。

具体例:checkboxの「checked」

以下のようなチェックボックスがあるとします。

<input type="checkbox" checked>

この場合、HTMLの時点で checked 属性が付いています。

しかし、jQueryでこのチェック状態を判定するときに attr() を使うと意図しない結果になることがあります。

$('input').attr('checked'); // => "checked"(HTMLに記述されているかどうか)
$('input').prop('checked'); // => true または false(現在の状態)

上記のように、attr() はHTMLに checked が書かれているかどうかを見ます。

一方、prop() は、実際にチェックされているか(状態)を返すのです。

つまり、動的な状態を扱いたいときは prop() を使うのが正解です。

よく使うプロパティ例

prop() を使う場面は他にもあります。

  • disabled(無効状態のボタンなど)
  • selected(選択状態のオプション)
  • readonly(読み取り専用かどうか)

これらの状態はユーザー操作によって変化するため、prop() を使って取得・設定するのが基本です。

attr() を使うのは静的情報の取得・変更時

逆に attr() が活躍するのは、HTMLに書かれた静的な情報を取得・変更したいときです。

  • href:リンク先のURL
  • src:画像のパス
  • title:ツールチップテキスト

これらは基本的にユーザー操作で変化するものではないため、attr() を使って問題ありません。

使い分けの目安まとめ

スクロールできます
操作対象適切なメソッド
動的に変わる状態(チェック、無効化など)prop()
HTMLに書かれた属性値(リンク、画像など)attr()

この違いを正しく理解しておけば、jQueryのコードがより意図通りに動作するようになりますし、デバッグの際にも迷わなくなるでしょう。

より実践的なattr()メソッドのサンプル

基本がわかってきたところで、次は実際に使えるattr()メソッドのサンプルを見ていきましょう。全てサンプルコードも載せていますので、コピーして色々試してみてください。

マウスオーバーで画像を変更

See the Pen 「attr()メソッド」 クリックでボタンのクラスを変更 by kasuga (@kntkfmgf-the-vuer) on CodePen.

コードはこちら

HTML

<div class="container">
  <img src="https://life-design-day.com/samples/img/img.png" alt="img">
  <p class="note">マウスオーバーで画像が変わります。</p>
</div>

CSS

*{
  box-sizing:border-box;
  margin: 0;
  padding: 0;
}
body{
  background: #e4eff7;
  font-size: 14px;
  padding: 20px;
}
.container{
  margin: 0 auto;
  max-width:1000px;
  text-align: center;
}
.container img{
  height: auto;
  max-width: 100%;
}
.note{
  margin-top: 20px;
}

jQuery

$(function(){
  $('.container img').hover(function(){
    $('.container img').attr('src','https://life-design-day.com/samples/img/img_hv.png');/*マウスオーバーした時の画像URLを指定*/
  },function(){
    $('.container img').attr('src','https://life-design-day.com/samples/img/img.png');/*マウスアウトした時の画像URLを指定*/
  });
});

クリックでボタンのクラスを追加・削除

See the Pen 「attr()メソッド」 クリックでボタンのクラスを変更 by kasuga (@kntkfmgf-the-vuer) on CodePen.

コードはこちら

HTML

<div class="container">
  <div>ボタン1</div>
  <div>ボタン2</div>
  <div>ボタン3</div>
</div>
<div class="reset">
  <a href="">リセット</a>
</div>

CSS

*{
  box-sizing:border-box;
  margin: 0;
  padding: 0;
}
body{
  background: #e4eff7;
  font-size: 14px;
  padding: 20px;
}
.container{
  display: flex;
  flex-wrap:wrap;
  gap:20px;
  justify-content: center;
  margin: 0 auto;
  max-width:1000px;
}
.container div{
  background: #666;
  color: #fff;
  cursor: pointer;
  border-radius: 10px;
  padding: 20px;
}
.container .active{
  background: #59b5ed;/*jsで「active」クラスを追加するのでスタイルを用意しておく*/
}
.reset{
  margin-top: 40px;
  text-align: center;
}

jQuery

$(function(){
  $('.container div').each(function(){
    $(this).on('click',function(){
      $(this).attr('class','active');/*クリックで「active」クラスを追加*/
    });
  });
  $('.reset').on('click',function(){
    $('.container div').removeAttr('class');/*クリックで「class」属性を削除*/
    return false;
  });
});

jQueryのattrメソッドのまとめ

ここまで、jQueryの attr() メソッドについて基本から応用まで詳しく解説してきました。

初心者の方にもわかりやすく、実際のコード例を交えながら進めてきたので、「なんとなく知っていた」が「しっかり使いこなせる」へと一歩進めたのではないでしょうか。

最後に、重要なポイントを振り返っておきましょう。

attr() メソッドの基本

属性操作のパターン

attr() と prop() の違い

混同しがちな prop() との違いも重要です。

スクロールできます
比較項目attr()prop()
アクセス対象HTML属性(静的)DOMプロパティ(動的)
主な用途href, src, title などchecked, disabled, selected など

使い分けのコツ

  • 静的なHTMLの情報 → attr()
  • 動的な状態や振る舞い → prop()

jQueryでの属性操作はUIの柔軟性を高める

属性を自在に操作できるようになると、、反応の良いWebインターフェースを構築することが可能です。

  • attr() はHTMLの属性を柔軟に操作できる強力なメソッド
  • 基本の使い方をマスターすれば、インタラクティブなWeb制作が一段とスムーズに
  • prop() との違いを正しく理解して、場面ごとに適切に使い分ける

これらをしっかりと理解し、実践に活かしていけば、jQueryによるフロントエンド開発の幅は格段に広がります。

かすが

最後まで読んでいただきありがとうございました!以下のおすすめ記事もチェックして見てくださいね!

まだブログを始めていない方は以下の記事をぜひチェック!

ブログを始めたばかりの人は以下の記事をぜひチェック!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次