ウェブエンジニア珍道中

日々の技術的に関する経験を書いていきます。脱線もしますが助けになれば幸いです。

jQueryでname指定で要素をとってくる時に考えたコト

jQueryでidを指定して要素をとってきたい場合は以下の通り

$("#hoge");

classを指定して要素をとってきたい場合は以下の通り

$(".hoge");

jQueryの本を見れば第1章に載ってそうです。
では、nameを指定してとってきたい場合はどうなるのか。
nameで取ってきたいケースがあったので、調べてみたところ、

$("*[name=hoge]");

と書くと良いらしい。まあ、普通に
「どんなタグでもいいから、name属性が"hoge"のやつ〜」
ってな具合に取ってきてますね。

そこで僕はアレですよ、
「あれ、name属性ってよく使いそうなのに、
name属性で取ってくるためのセレクタはないんかいな(関西弁)」と
思ったわけですよ。

てな訳で調査を進めたところ、
jQueryではなく、javascriptでname属性用の関数がありました。

document.getElementsByName("hoge");

なるほど、これを使うのも有りなのかな、
jQueryのセレクタと混ざってごちゃっとする気もするけど、
まあ使ってみよう。

document.getElementsByName("hoge");

取ってきて…とりあえず背景色でも書き換えてみますか。

document.getElementsByName("hoge").css( "background", "red" );

TypeError: document.getElementsByName(...).css is not a function

…あ、そうか
jQueryのセレクタで取ってきてないから、
jQueryの関数が使えないのか。
くそー、面倒くさい。

…てな訳で結局

$("*[name=hoge]");

を使って取得しました。
統一感があっていいや。
name属性用の関数があるなら使ってみようかという出来心です。ハイ。

それではまた。


5月19日追記

$("[name=hoge]");

でとれました、アスタリスクがいらなかったという…。

改訂新版jQuery本格入門

改訂新版jQuery本格入門

jQuery最高の教科書

jQuery最高の教科書