2010-11-26 10 views
6

hover()で変数を渡すことはできますか?jquery:hover()関数で変数を渡していますか?

以下のスクリプトのように、私は同じ変数を2回宣言したくありませんvar target = xxxと私はこの変数をグローバルにしたくありませんtarget = xxx bcosこの変数名 - ターゲットを使用する他の関数があります。

$('.image-profile').hover(function() { 

     var target = $('.button-change-image-profile',this); 
     target.show(); 

    },function() { 

     //var target = $('.button-change-image-profile',this); 
     target.hide(); 

    }); 

だから私はこの},function (target) {のようなVARを渡そうとしました、もちろんそれは間違っているが、他の方法では、このVARを渡すために?

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

+0

イベントの種類に関数を渡す引数の使用は何ですか、あなたが今までに望むものは、イベントまたはthisを通じて利用可能になります... – kobe

答えて

6

短いバージョンは、ちょうどここでトグルすることである。

$('.image-profile').hover(function() { 
    $('.button-change-image-profile',this).toggle(); 
}); 

このように、(例えば.each()を使用して)ループとき外それを定義(より一般的な溶液として)各ハンドラでは、利用可能なました:

$('.image-profile').each(function() { 
    var target = $('.button-change-image-profile',this); 
    $(this).hover(function() { 
     target.show(); 
    },function() { 
     target.hide(); 
    }); 
}); 
+0

ありがとうございます!なぜ私はそれを考えなかったのですか?助けてくれてありがとう:-) – laukok

+0

一般的な答えをありがとう!私を助けました。 – Jeff

1

ホバー機能のうち、var outを定義するだけです。

+0

は、関数から定義されたすべての変数は何らかのグローバル関数です。 – slobodan

+3

誰があなたに言ったのか分かりませんが、それは正しくありません。 –

+0

これは問題を「解決する」ための非常に悪い方法です。実際には多くの '.image-profile'要素が存在するので、ここで問題を引き起こします。 –

1

私はjQuery bindがあなたの望むものかもしれないと思います。

7

もう1つの考えられる方法は、jQuery .data()を使用して、ホバーのin/outのthisにデータを保存することです。あなたはマウスでそれを保存します。マウスでそれを取得します。 これは

$('.image-profile').hover(function() { 

    var target = $('.button-change-image-profile',this); 
    target.show(); 

    // we save the target object into the 'target' key. 
    $(this).data('target',target); 

},function() { 

    // we retrieve the target object (a jQuery object) and then hide it. 
    $(this).data('target').hide(); 

}); 

がうまくいけば、このアプローチはあまりにも間違っていない...ので、tはいくつかのゴミを作成することができ、ホバー機能のうち、グローバルVARまたはVARを使用して、概念的に類似していてもよい...

+0

これは私にとって問題を解決しました、ありがとうございました! – Saturnix

+0

私のために働いた:) – Heihachi

関連する問題