jQueryのメソッドチェーン中で各要素の属性にアクセスする方法を教えて下さい。


例えば、以下のリストの各要素に対して、メソッドhogeをparamを引数にして呼び出したいです。
<ul>
<li class="target" param="1">a</li>
<li class="target" param="2">b</li>
<li class="target" param="3">c</li>
</ul>

以下の様な感じでアクセスしたいんですが、上手く情報を見つけられませんでした。
$(".target").hoge(this.attr("param"))

よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2009/09/26 05:24:53
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226

ポイント50pt

this.attr("param") ではなく $(this).attr("param") か this.getAttribute("param") じゃないでしょうか?

↓こんな感じのコードで動作確認できました。

$(".target").click(function(){
  alert( $(this).attr("param") );
});
$(".target").click(function(){
  alert( this.getAttribute("param") );
});

ちなみに以下のようなことは出来ません。ここではthisに入ってるものが違いますからね。

$(".target").attr("title", $(this).attr("param"));
});

こういうことをしたい場合は以下のようにすれば良いです。

$(".target").each(function(){
	$(this).attr("title", $(this).attr("param"));
});
id:taichino0730

y-kawaz 様

ご回答ありがとうございます。

最後の例が求めていたコードです!

なるほど、eachと$(this)で要素ごとに処理するわけですね。

若干メソッドチェーンが見づらくなりますが、十分簡潔なので嬉しいです!

ありがとうございました。

2009/09/25 19:37:48

その他の回答1件)

id:y-kawaz No.1

回答回数1422ベストアンサー獲得回数226ここでベストアンサー

ポイント50pt

this.attr("param") ではなく $(this).attr("param") か this.getAttribute("param") じゃないでしょうか?

↓こんな感じのコードで動作確認できました。

$(".target").click(function(){
  alert( $(this).attr("param") );
});
$(".target").click(function(){
  alert( this.getAttribute("param") );
});

ちなみに以下のようなことは出来ません。ここではthisに入ってるものが違いますからね。

$(".target").attr("title", $(this).attr("param"));
});

こういうことをしたい場合は以下のようにすれば良いです。

$(".target").each(function(){
	$(this).attr("title", $(this).attr("param"));
});
id:taichino0730

y-kawaz 様

ご回答ありがとうございます。

最後の例が求めていたコードです!

なるほど、eachと$(this)で要素ごとに処理するわけですね。

若干メソッドチェーンが見づらくなりますが、十分簡潔なので嬉しいです!

ありがとうございました。

2009/09/25 19:37:48
id:i4ooon No.2

回答回数56ベストアンサー獲得回数20

ポイント35pt

(function($){

jQuery(document).ready( function() {

$(".target").each(function(){

alert( $(this).attr("param") );

// $(this).attr("param").hoge();

});

});

})(jQuery);

で、どうでしょう?param属性の値1,2,3を取得(指定)したいんですよね?

もし、a,b,cを取得(指定)したいなら、

alert( $(this).html() );

alert( $(this).text() );

です。

paramでhoge()を呼ぶなら、直接引数ではないですが、上記のコメント箇所のような記述で良いです。

余計な疑問ですが、何をしたいんでしょう?向学のための聞かせてください。

id:taichino0730

i4ooon 様

ご回答ありがとうございます。

jQueryのプラグイン化のアプローチですね。

これでも処理したい事は達成できるんですけど、

変数のスコープが広くなってしまうので、少し抵抗があります。

ちなみに、やりたい事はサーバサイドからのデータの受け渡しです。

動的に作成したページの情報に基づいてjavascriptに処理をさせるのに、

何が一番シンプルかと考えまして、html中の各要素に埋め込む事にしました。

2009/09/25 19:52:53

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません