1
0

More than 3 years have passed since last update.

「data()」と「attr()」について

Posted at

背景

カスタム属性を使う際に必須のメソッドの2つの違いがいまいち理解していなかったため調べて自分なりにまとめてみた。

data()について

「data()」を使うとHTML要素内に付与されたdata属性に対して、取得・設定・変更などが簡単に行える。
独自の属性を作成して付与できるのがdata属性の特徴です。
このようにすることで、あとからJavaScriptやjQueryで取得・変更できるわけです。

attr()について

dataメソッドと似ていますが、属性名の指定は「data-」の部分も一緒に記述しなければならない。

data()の使い方


<body>
<p data-name="sato" data-age="42" data-tel="012-3456-7890">私の名前は佐藤です</p>

<script>
    const result = $('p').data();

    console.log( result );
</script>
</body>
// =>{name: "sato", age: 42, tel: "012-3456-7890"}

対象要素.data( 属性名, 値 )とすると設定・変更できる


<body>
<p>おはよう</p>

<script>
    $('p').data('greet', 'morning');

    console.log( $('p').data('greet') );     // 属性の設定


    $('p').data('greet', 'hello');

    console.log( $('p').data('greet') );   // 属性の更新
</script> 
</body>
// => morning

// => evening

attr()の使い方

対象要素.attr( 属性名, 値 )


<body>
<p>おはよう</p>

<script>
    $('p').attr('data-greet', 'morning');
</script>
</body>
// => morning

違いは?

「attr()」で設定した属性はHTML要素へ直接追加されるが、「data()」で設定した属性はjQuery内へ一時的に保持されるだけで直接HTML要素に追加されるわけではない。


<body>
<p id="one">テスト1</p>
<p id="two">テスト2</p>

<script>
    $('#one').attr('data-name', 'sato');

    console.log( $('#one')[0] );

    $('#two').data('name', 'sato');

    console.log( $('#two')[0] );
</script>
</body>
// => <p id="one" data-name="taro">サンプルテキスト</p>   ←追加されている
// => <p id="two">サンプルテキスト</p>                ←追加されていない

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0