15
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

spanタグにデータ属性を持たせる

Posted at

railsでhtmlに値をもたせたいと思ってhidden_field_tagを利用して実装しようとしたが、タグにdata属性として渡したほうがいいというアドバイスをもらったのだが、data属性ってなに?どうやるの??ってなったのでメモします。
やりたかったこととしては、HTMLに値をもたせておいて、それをJavaScriptでとってきて、cookieに保存すること。

data属性って?

以下のようにhtmlタグの中に書く。
data-*
data属性:適切な属性や要素がない場合にページやアプリケーションに固有の独自データを格納する。全ての HTMLにたいして独自のデータ属性をいくつでも、どんな値でも作れる。参考
つまり、ザックリ言うと

オールマイティーな属性

と、私は納得しました(全然わかってないかもw)

じゃあどう書けばいいの?

初めは
<%= hidden_field_tag '' , VALUE, { :class => hoge } %>
という感じで書いていました。
しかし、こんな面倒なことしなくてもよいという指摘をうけ、
<span class="hoge" data-sample="<% VALUE %>"・・・①
と書きました。railsのhiddenタグにdataオプションないよ・・・VALUEの値はコントローラーで渡されたものいれてeachでまわしたいんだよ・・・と思っていたら考えすぎていましたが、上記のように簡単にかけました。
(新卒あるある)

じゃあJavaScriptでdata属性としてもたせたものを使うには?

そして次なる壁はJSで使うこと。JQueryを利用すると

id属性の時:$('#sample')
class属性の時:$('.sample')
data属性の時:$('.sample').data('sample')

というような対応でかけます。上記のdata属性の部分は①と対応しています。
data属性の場合は、「どこどこclassのdataを持ってきてね」と書く感じかな。

まとめ

HTMLにdata属性を使う時は
<span class="CLASS-NAME" data-DATANAME="<% VALUE %>"
data属性をJSで使う時は
$('.CLASS-NAME').data('DATANAME')

15
13
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
15
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?