Начиная с jQuery 1.7, событие hoverIntent на вкладках пользовательского интерфейса не запускается - PullRequest
0 голосов
/ 23 ноября 2011

с тех пор, как я обновился до jQuery 1.7, событие hoverIntent больше не работает на вкладках пользовательского интерфейса. Начиная с jQuery 1.7, вкладка переключается мгновенно вместо использования hoverIntent.

Вот код, который я использовал для инициализации вкладок пользовательского интерфейса:

$("#featured").tabs({event: "hoverintent"}).tabs({fx:{opacity: "toggle", duration: 250}}).tabs("rotate", 7000, true);
      $("#featured").hover(  
        function() {  
          $("#featured").tabs("rotate",0,true);  
        },  
        function() {  
          $("#featured").tabs("rotate",7000,true);  
        }  
    );

Это событие js for hoverIntent, которое я включил в свою страницу:

var cfg = ($.hoverintent = {
  sensitivity: 7,
  interval: 100
});

$.event.special.hoverintent = {
  setup: function() {
    $(this).bind("mouseover", jQuery.event.special.hoverintent.handler);
  },
  teardown: function() {
    $(this).unbind("mouseover", jQuery.event.special.hoverintent.handler);
  },
  handler: function(event) {
    event.type = "hoverintent";
    var self = this,
      args = arguments,
      target = $(event.target),
      cX, cY, pX, pY;


    function track(event) {
      cX = event.pageX;
      cY = event.pageY;
    };
    pX = event.pageX;
    pY = event.pageY;
    function clear() {
      target.unbind("mousemove", track).unbind("mouseout", arguments.callee);
      clearTimeout(timeout);
    }
    function handler() {
      if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
        clear();
        jQuery.event.handle.apply(self, args);
      } else {
        pX = cX; pY = cY;
        timeout = setTimeout(handler, cfg.interval);
      }
    }
    var timeout = setTimeout(handler, cfg.interval);
    target.mousemove(track).mouseout(clear);
    return true;
  }
};

Кажется, здесь есть исправление (хотя для UI Accordion): https://github.com/jquery/jquery-ui/commit/f0f54e38d8eab613d7ea25d698b81126e5263d83#diff-0

См. Демонстрацию: http://jqueryui.com/demos/accordion/hoverintent.html

Однако я не уверен, как заставить hoverIntent работать снова. Какие изменения должны быть сделаны в коде выше? Рад любой помощи!

1 Ответ

2 голосов
/ 07 декабря 2011

Обновление jQuery до v1.7.1 решило проблему.

...