鼠标悬停取代错误的img src

时间:2012-02-08 06:12:17

标签: jquery

所以,我有一个奇怪的错误。如果非常fast move mouse around the page jquery用预览替换方块中错误的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 :(得分:1)

在mouseleave事件中,您使用在{mouse}事件中定义的sim变量 然后通过快速鼠标移动,将在前一事件的鼠标之前调用另一个div的mouseenter。

你必须改变你的拱门。例如,在mouseenter中创建新div时,此时绑定mouseleave事件 有点东西(未经测试):

$('.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/