2010-12-23 10 views
0

これは簡単な質問ですが、こちらの回答は表示されませんでした。私はこのようなコードを持っている:jQuery:選択したすべての要素にJS関数をバインドしてください

$('.thumbImg').mouseout(function(){selectCur()}); 
//selectCur() is a pure-JS function defined elsewhere in the document 

しかし、関数は唯一のクラス.thumbImgで最初の要素にバインドされています。通常、私は$(this)を使用しますが、ここではうまくいかないでしょう(私が間違っていない限り)。

私の最後の手段はforループだと思いますが、それを回避する手段があると確信しています。

ありがとうございます!

+0

問題はおそらく 'selectCur()'にあります。そのコードはハンドラをすべての.thumbImgにバインドします*。 –

+0

そうです。私は自分自身が良い、昔ながらのキャッシュの問題を抱えていました。 – Nathan

答えて

0

キャッシュの問題だとは思わないが、それはコンテキストの問題です。 $ thisをselectCurに渡して修正してください。

$('.thumbImg').mouseout(function(){selectCur($(this))}); 

あるいは

$('.thumbImg').mouseout(selectCur); 

その後selectCurは$(this)を使用することができます。 selectCurは他の場所からも使用できるので、最初の解決策が良いと思います。必要なときにノードに渡すだけです。

+0

私はあなたにファーストラインを使っています。ありがとう! – Nathan

1

理由がthisでは機能しません。のローカルであり、selectCur()の機能ではありません。

あなたはselectCur()thisを使用したい場合は、あなたがそれを行うことができますように:

$('.thumbImg').mouseout(selectCur);

をあなたがそれを行う方法は、あなたの関数を呼び出す匿名関数/クロージャを作り、マウスアウトでそれを参照してくださいです。これに代えて、あなたの関数を指し示すだけです(呼び出さず、()はここにありません)、イベントが発生すると呼び出されます。関数を指す関数は必要ありません。ちょうどそれを指すと、それは動作します。

関連する問題