2012-02-08 6 views
0

だから、私は奇妙なバグがあります。 fast move mouse around the page jqueryが正方形ブロック内の間違ったimg srcをプレビューで置き換えた場合。マウスホバーが間違ったimgを置き換えます。src

これはjsのコードです:

$('.mini-info').bind('mouseenter', function() { 
    var xex = $(this).position().left; 
    var yey = $(this).position().top; 
    sim = $('img', this).attr('src'); 
    kuda = $('a', this).attr('href'); 


    $('#bcase div.'+$(this).attr('id')).addClass('active').css({ 
     'top' : yey, 
     'left' : xex 
    }).attr({'onclick': 'location.href="'+kuda+'"'}); 

    var omg = $('#bcase div.'+$(this).attr('id')+' div.b').length; 

    $('#bcase div.'+$(this).attr('id')+' div.b').css({ 
     'width': wid/omg 
    }); 
    }); 



    $('#bcase > div').bind('mouseleave', function() { 
    $(this).removeClass('active'); 
    $('.mini-info#'+$(this).attr('class')+' img').attr({'src': sim}); 
    }); 

それは修正することが可能ですか?

通常の作業は、プレビューで正方形のブロックの1つにマウスを動かすと、スクリプトはマウスの下の画像を変更します。それはうまくいく。しかし、上記のバグは良くありません。

+0

あなたの質問に関連するコードを貼り付けるのではなく、私たちは私たちが慣れていないWebページでそれを見つけることを試みる行くなってください。と。 – jfriend00

+0

私は生きている例で最高だと思った。さて、ちょっと待ってください。 – Nixon

+0

作業リンクも含めて価値がありますが、ページの仕組みやコードの場所をリバースエンジニアリングすることなく、人々が見るための関連コードをそのまま貼り付けると、さらに多くの回答が得られます。今の場合は、余分なものがたくさん含まれています。 HTMLとJSの関連部分だけを含むことが最善です。 – jfriend00

答えて

1

mouseleaveイベントでは、mouseenterイベントで定義されている変数simを使用します。
次に、速いマウス操作で、前のイベントのマウスが離れる前に、他のdivのマウスが呼び出されます。

アーチを変更する必要があります。たとえば、mouseenterで新しいdivを作成する場合は、この時点でmouseleaveイベントをバインドします。そのLKE
何か(テストしていません):

$('.mini-info').bind('mouseenter', function() { 
    var xex = $(this).position().left; 
    var yey = $(this).position().top; 
    var sim = $('img', this).attr('src'); 
    kuda = $('a', this).attr('href'); 


    $('#bcase div.'+$(this).attr('id')).addClass('active').css({ 
    'top' : yey, 
    'left' : xex 
    }).attr({'onclick': 'location.href="'+kuda+'"'}) 
    .bind('mouseleave', function() { 
    $(this).removeClass('active'); 
    $('.mini-info#'+$(this).attr('class')+' img').attr({'src': sim}); 
    }); 

    var omg = $('#bcase div.'+$(this).attr('id')+' div.b').length; 

    $('#bcase div.'+$(this).attr('id')+' div.b').css({ 
    'width': wid/omg 
    }); 
}); 

はjsfiddleを参照してください。http://jsfiddle.net/bouillard/ptJQy/

+0

ありがとうございました。私はこのコードをテストしましたが、この修正は問題を解決しません。 – Nixon

+0

おそらく、この関数でsimを宣言するために 'var sim'を追加します。 –

+1

それだけです! 'var'を追加してください –

関連する問題