• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:$(this)を変数に入れないと動作しない理由)

$(this)を変数に入れないと動作しない理由

このQ&Aのポイント
  • jQueryのセレクタ$(this)は、現在の要素に対して処理を適用するための実行時の変数です。
  • $(this)を変数に入れずに直接使用すると、要素が変わってしまい、正しく動作しなくなります。
  • そのため、`var a = $(this);`とすることで、処理を適用する要素を確実に指定する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>上記を、 >var img = $(this).find('img'); >とした場合、なぜか画像が切り替わりません。 そうしてしまうと、aの値が設定されないから、下のほうにある a.hover(function(){ が正常に動作しなくなる。

pileny
質問者

お礼

さっそくのご回答ありがとうございます。 たしかに! hoverのところを見落としていました! 試しに以下のようにすると正常に動作しました。 お手数おかけしました。 $(function(){ $('.rollover').each(function(){ var img = $(this).find('img'); var src_off = img.attr('src'); var src_on = src_off.replace('_off','_on'); $('<img />').attr('src','src_on'); img.hover(function(){ img.attr('src',src_on); },function(){ img.attr('src',src_off); }); }); });

関連するQ&A