2012-11-21 3 views
6

deptmts配列内の要素にマウスを移動すると、brnches配列内の対応する要素がフェードインおよびフェードインされます。私はそれがすべきだと思ったものを下に追加しましたが、どこが間違っているのかは分かりません。どんな助けでも大歓迎です。他の配列内の対応する要素をフェードインするためのホバー配列要素[閉鎖の問題]

var brnches = ["#branch01","#branch02","#branch03","#branch04"] 
var deptmts = ["#depart01","#depart02","#depart03","#depart04"] 

var brchhov = function() { 
    for(var i=0; i<deptmts.length; i++){ 
     $(deptmts[i]).hover(
      function(){$(brnches[i]).stop(true).fadeTo("fast", 1);}, 
      function(){$(brnches[i]).stop(true).fadeTo("slow", 0);} 
     ); 
    } 
}; 
+1

変数として代わりに支店や部署のbrnches&deptmtsを使用する理由だけでオフトピックノート、?良いと明確な変数名は、コードを説明するのに非常に役立ちます。 –

+1

@MorganWilde:申し訳ありませんが、あなたは正しいです。私はすべてをコピーした後、これらを変更しておくべきです。私は個人的な好みのために短縮しました。プラス面では、あなたはまだ彼らが何を意味しているか理解していました:) ...はい、それは悪い習慣です。 – dev

答えて

10

クラシック閉鎖問題..

var brchhov = function() { 
    for(var i=0; i<deptmts.length; i++){ 
     (function(num){ 
      $(deptmts[num]).hover(
       function(){$(brnches[num]).stop(true).fadeTo("fast", 1);}, 
       function(){$(brnches[num]).stop(true).fadeTo("slow", 0);} 
      ); 
     })(i); 
    } 
}; 

Check Fiddle

+0

+1これは要求に答えます。 '... deptmts配列内の要素にカーソルを置くと、brnches配列内の対応する要素がフェードイン/フェードアウトされます。' @vletech:サイドノートとしてはホバリングされた部門と退職した支店との間の相関は、あなたがマッチングしている/要求された順序であることに依存している以外のものです。ブランチが常に部門と同じインデックス/オーダーにない場合は、エレメントインデックスよりも信頼できるものでマッチさせる必要があります。 – Nope

+0

@Sushanth:完璧に働いてくれてありがとう、私はまだ学んでいるので、これは私が覚えているものです。 – dev

+0

@FrançoisWahl:両方の配列で同じ順序であることに頼っていましたが、これを変更する必要はありません。 – dev