例えば、以下のリストの各要素に対して、メソッド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"))
よろしくお願いします。
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")); });
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")); });
y-kawaz 様
ご回答ありがとうございます。
最後の例が求めていたコードです!
なるほど、eachと$(this)で要素ごとに処理するわけですね。
若干メソッドチェーンが見づらくなりますが、十分簡潔なので嬉しいです!
ありがとうございました。
(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()を呼ぶなら、直接引数ではないですが、上記のコメント箇所のような記述で良いです。
余計な疑問ですが、何をしたいんでしょう?向学のための聞かせてください。
i4ooon 様
ご回答ありがとうございます。
jQueryのプラグイン化のアプローチですね。
これでも処理したい事は達成できるんですけど、
変数のスコープが広くなってしまうので、少し抵抗があります。
ちなみに、やりたい事はサーバサイドからのデータの受け渡しです。
動的に作成したページの情報に基づいてjavascriptに処理をさせるのに、
何が一番シンプルかと考えまして、html中の各要素に埋め込む事にしました。
y-kawaz 様
ご回答ありがとうございます。
最後の例が求めていたコードです!
なるほど、eachと$(this)で要素ごとに処理するわけですね。
若干メソッドチェーンが見づらくなりますが、十分簡潔なので嬉しいです!
ありがとうございました。