2011-06-05 190 views
2

我有一个无序列表,每个列表项目背景在鼠标悬停在其上时都会改变颜色。如果鼠标不移动并且滚轮向下滚动,则光标会悬浮在不同的列表项上,但通过jQuery的悬停类不会被触发。为什么是这样?我该如何解决问题?使用鼠标滚轮滚动不会触发jQuery悬停或鼠标悬停

这是代码。

(function ($) { 
    Drupal.behaviors.jMapping = { 
    attach: function(context, settings) { 
     var jMap, 
      pointToMoveTo, 
      data, 
      bounds, 
      icon, 
      $el; 

     $('#map').height(200).jMapping({ 
     category_icon_options: { 
      'default': {color: '#7CDF65'} 
     } 
     }); 

     jMap = $('#map').data('jMapping'); 
     bounds = jMap.getBounds(); 

     $.each(jMap.gmarkers, function(id, marker){ 

     google.maps.event.addListener(marker, 'mouseover', function() { 
      $('#nid-' + id).addClass('hover'); 
     }); 
     google.maps.event.addListener(marker, 'mouseout', function() { 
      $('#nid-' + id).removeClass('hover'); 
     }); 
     }); 


     $("#map-side-bar li").mouseenter(function() { 

     $el = $(this); 
     data = $el.data('jmapping'); 

     if (!$el.hasClass("hover")) { 
      $el.addClass("hover"); 

      jMap.gmarkers[data.id].styleIcon.set("color", "#017DC3"); 
      pointToMoveTo = $.jMapping.makeGLatLng(data.point); 
      jMap.map.panTo(pointToMoveTo); 
     } 
     }).mouseleave(function() { 
     $("#map-side-bar li").removeClass("hover"); 
     jMap.gmarkers[data.id].styleIcon.set("color", "#7CDF65");  
     }); 
    } 
    }; 
})(jQuery); 

回答

0

退房的mousewheel plugin由布兰登·艾伦:

一个jQuery插件,增加了 跨浏览器的鼠标滚轮支持。

// using bind 
$('#my_elem').bind('mousewheel', function(event, delta) { 
    console.log(delta); 
}); 

// using the event helper 
$('#my_elem').mousewheel(function(event, delta) { 
    console.log(delta); 
}); 
+0

这个jQuery插件只是使用mousewheel事件。 document.getElemmentById('thing')。onmousewheel = yourFunc也会这样做。我只在Chrome中进行了测试 – 2011-11-16 01:13:26

+0

该插件标准化了您将从不同浏览器/平台上的鼠标事件返回的增量。 – addedlovely 2011-11-16 13:15:01

+0

如果您的目标是在项目滚动时调用悬停操作,则原始mousewheel事件最适合webkit。许多用户界面并不关心三角洲(facebook ticker,gmail离线) – 2011-11-20 20:32:55