Advertisement
schpnc

JS Deferred Hover

Aug 8th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var TimeoutHover = function(items, activeClass, deferTime)
  2. {
  3.     var _deferTime = deferTime || 200;
  4.     var _deferTimer = null;
  5.     var _activeClass = activeClass || 'active';
  6.  
  7.     if (!items) {
  8.         throw new Error("Argument 'items' is empty");
  9.     }
  10.  
  11.     var $items = $(items);
  12.  
  13.     function menuItemMouseEnter(e) {
  14.         if (_deferTimer) clearTimeout(_deferTimer);
  15.         _deferTimer = setTimeout(menuItemActivate, _deferTime, e.currentTarget);
  16.     }
  17.  
  18.     function menuItemActivate(target) {
  19.         var $target = $(target);
  20.         if (!$target.is('.'+_activeClass)) $items.removeClass(_activeClass);
  21.         $target.addClass(_activeClass);
  22.     }
  23.  
  24.     function menuItemMouseLeave(e) {
  25.         if (_deferTimer) clearTimeout(_deferTimer);
  26.         _deferTimer = setTimeout(menuItemDeactivate, _deferTime);
  27.     }
  28.  
  29.     function menuItemDeactivate() {
  30.         $items.removeClass(_activeClass);
  31.     }
  32.  
  33.     function attachEvents() {
  34.         $items.hover(menuItemMouseEnter, menuItemMouseLeave);
  35.     }
  36.  
  37.     attachEvents();
  38. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement