2016-04-01 12 views
0

私はimgフォルダ内の.jpgを数え、albumLengthの下にその番号を保存しているサイトを作っています。その後、forサイクルを使ってそれらをサイトに表示し、それぞれにid = "content" + i、つまりcontent1、content2などです。私がコンテンツ1の上にマウスを置くと、id = plus_label1の要素が隠されて見えなくなり、オブジェクトを残して再び見えなくすることができます。問題は、私の現在のコードが動作しておらず、エラーもなく、表示されないことです。なぜどんなアイデア?JQuery .hover()issue

for(i=1;i<=albumLength;i++){ 
$("#content"+i).hover(
    function() { 
    $("#plus_label"+i).css('visibility','visible'); 
    }, 
    function() { 
$("#plus_label"+i).css('visibility','hidden'); 
    } 
); 
} 
+0

あなたはコンテンツに一貫性のあるクラス名を追加することができ、またはあなたはそれへのアクセス権を持っていないのですか? – Adjit

+1

htmlを投稿することができれば、実際の例をフィドルに置くこともできます。 –

+2

"ループで非同期関数のvarスコープを調べる" – phenxd

答えて

1

問題は、ホバーを実行すると、iは定義されなくなりました。 しかし#plus_label#contentあなたができることと同じ番号で終わることを考える:

for(i=1;i<=albumLength;i++){ 
$("#content"+i).hover(
    function() { 
    var i = parseInt($(this).attr('id')); 
    $("#plus_label"+i).css('visibility','visible'); 
    }, 
    function() { 
    var i = parseInt($(this).attr('id')); 
    $("#plus_label"+i).css('visibility','hidden'); 
    } 
); 
} 
+0

技術的には、 'i'は存在します。それらの関数で正確に同じ 'i'値を参照しているということだけです。意味は、それらのすべてが 'albumLength + 1'として' i'を読むつもりです。 –