2011-06-05 189 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