2017-04-18 85 views
0

你好我正在使用presta 1.6,我想改變子菜單懸停點擊,仍然在菜單(母親菜單)盤旋,但我嘗試了很多時間與任何成功結果的問題在快魚-modified.js。對於菜單中的任何一個可以幫助和日ThnxPrestadhop 1.6 superfish菜單懸停點擊

這個快魚-modified.js


(function ($) { 
"use strict"; 

var methods = (function() { 
    // private properties and methods go here 
    var c = { 
      bcClass: 'sf-breadcrumb', 
      menuClass: 'sf-js-enabled', 
      anchorClass: 'sf-with-ul', 
      menuArrowClass: 'sf-arrows' 
     }, 
     ios = (function() { 
      var ios = /iPhone|iPad|iPod/i.test(navigator.userAgent); 
      if (ios) { 
       // iOS clicks only bubble as far as body children 
       $(window).load(function() { 
        $('body').children().on('click', $.noop); 
       }); 
      } 
      return ios; 
     })(), 
     wp7 = (function() { 
      var style = document.documentElement.style; 
      return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent)); 
     })(), 
     toggleMenuClasses = function ($menu, o) { 
      var classes = c.menuClass; 
      if (o.cssArrows) { 
       classes += ' ' + c.menuArrowClass; 
      } 
      $menu.toggleClass(classes); 
     }, 
     setPathToCurrent = function ($menu, o) { 
      return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels) 
       .addClass(o.hoverClass + ' ' + c.bcClass) 
        .filter(function() { 
         return ($(this).children(o.popUpSelector).hide().show().length); 
        }).removeClass(o.pathClass); 
     }, 
     toggleAnchorClass = function ($li) { 
      $li.children('a').toggleClass(c.anchorClass); 
     }, 
     toggleTouchAction = function ($menu) { 
      var touchAction = $menu.css('ms-touch-action'); 
      touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y'; 
      $menu.css('ms-touch-action', touchAction); 
     }, 
     applyHandlers = function ($menu, o) { 
      var targets = 'li:has(' + o.popUpSelector + ')'; 
      if ($.fn.hoverIntent && !o.disableHI) { 
       $menu.hoverIntent(over, out, targets); 
      } 
      else { 
       $menu 
        .on('mouseenter.superfish', targets, over) 
        .on('mouseleave.superfish', targets, out); 
      } 
      var touchevent = 'MSPointerDown.superfish'; 
      if (!ios) { 
       touchevent += ' touchend.superfish'; 
      } 
      if (wp7) { 
       touchevent += ' mousedown.superfish'; 
      } 
      $menu 
       .on('focusin.superfish', 'li', over) 
       .on('focusout.superfish', 'li', out) 
       .on(touchevent, 'a', o, touchHandler); 
     }, 
     touchHandler = function (e) { 
      var $this = $(this), 
       $ul = $this.siblings(e.data.popUpSelector); 

      if ($ul.length > 0 && $ul.is(':hidden')) { 
       $this.one('click.superfish', false); 
       if (e.type === 'MSPointerDown') { 
        $this.trigger('focus'); 
       } else { 
        $.proxy(over, $this.parent('li'))(); 
       } 
      } 
     }, 
     over = function() { 
      var $this = $(this), 
       o = getOptions($this); 
      clearTimeout(o.sfTimer); 
      $this.siblings().superfish('hide').end().superfish('show'); 
     }, 
     out = function() { 
      var $this = $(this), 
       o = getOptions($this); 
      if (ios) { 
       $.proxy(close, $this, o)(); 
      } 
      else { 
       clearTimeout(o.sfTimer); 
       o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay); 
      } 
     }, 
     close = function (o) { 
      o.retainPath = ($.inArray(this[0], o.$path) > -1); 
      this.superfish('hide'); 

      if (!this.parents('.' + o.hoverClass).length) { 
       o.onIdle.call(getMenu(this)); 
       if (o.$path.length) { 
        $.proxy(over, o.$path)(); 
       } 
      } 
     }, 
     getMenu = function ($el) { 
      return $el.closest('.' + c.menuClass); 
     }, 
     getOptions = function ($el) { 
      return getMenu($el).data('sf-options'); 
     }; 

    return { 
     // public methods 
     hide: function (instant) { 
      if (this.length) { 
       var $this = this, 
        o = getOptions($this); 
       if (!o) { 
        return this; 
       } 
       var not = (o.retainPath === true) ? o.$path : '', 
        $ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector), 
        speed = o.speedOut; 

       if (instant) { 
        $ul.show(); 
        speed = 0; 
       } 
       o.retainPath = false; 
       o.onBeforeHide.call($ul); 
       $ul.stop(true, true).animate(o.animationOut, speed, function() { 
        var $this = $(this); 
        o.onHide.call($this); 
       }); 
      } 
      return this; 
     }, 
     show: function() { 
      var o = getOptions(this); 
      if (!o) { 
       return this; 
      } 
      var $this = this.addClass(o.hoverClass), 
       $ul = $this.children(o.popUpSelector); 

      o.onBeforeShow.call($ul); 
      $ul.stop(true, true).animate(o.animation, o.speed, function() { 
       o.onShow.call($ul); 
      }); 
      return this; 
     }, 
     destroy: function() { 
      return this.each(function() { 
       var $this = $(this), 
        o = $this.data('sf-options'), 
        $hasPopUp; 
       if (!o) { 
        return false; 
       } 
       $hasPopUp = $this.find(o.popUpSelector).parent('li'); 
       clearTimeout(o.sfTimer); 
       toggleMenuClasses($this, o); 
       toggleAnchorClass($hasPopUp); 
       toggleTouchAction($this); 
       // remove event handlers 
       $this.off('.superfish').off('.hoverIntent'); 
       // clear animation's inline display style 
       $hasPopUp.children(o.popUpSelector).attr('style', function (i, style) { 
        return style.replace(/display[^;]+;?/g, ''); 
       }); 
       // reset 'current' path classes 
       o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass); 
       $this.find('.' + o.hoverClass).removeClass(o.hoverClass); 
       o.onDestroy.call($this); 
       $this.removeData('sf-options'); 
      }); 
     }, 
     init: function (op) { 
      return this.each(function() { 
       var $this = $(this); 
       if ($this.data('sf-options')) { 
        return false; 
       } 
       var o = $.extend({}, $.fn.superfish.defaults, op), 
        $hasPopUp = $this.find(o.popUpSelector).parent('li'); 
       o.$path = setPathToCurrent($this, o); 

       $this.data('sf-options', o); 

       toggleMenuClasses($this, o); 
       toggleAnchorClass($hasPopUp); 
       toggleTouchAction($this); 
       applyHandlers($this, o); 

       $hasPopUp.not('.' + c.bcClass).superfish('hide', true); 

       o.onInit.call(this); 
      }); 
     } 
    }; 
})(); 

$.fn.superfish = function (method, args) { 
    if (methods[method]) { 
     return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } 
    else if (typeof method === 'object' || ! method) { 
     return methods.init.apply(this, arguments); 
    } 
    else { 
     return $.error('Method ' + method + ' does not exist on jQuery.fn.superfish'); 
    } 
}; 

$.fn.superfish.defaults = { 
    popUpSelector: 'ul,.sf-mega', // within menu context 
    hoverClass: 'sfHover', 
    pathClass: 'overrideThisToUse', 
    pathLevels:1 , 
    delay: 800, 
    animation: {opacity: 'show'}, 
    animationOut: {opacity: 'hide'}, 
    speed: 'normal', 
    speedOut: 'fast', 
    cssArrows: true, 
    disableHI: false, 
    onInit: $.noop, 
    onBeforeShow: $.noop, 
    onShow: $.noop, 
    onBeforeHide: $.noop, 
    onHide: $.noop, 
    onIdle: $.noop, 
    onDestroy: $.noop 
}; 

// soon to be deprecated 
$.fn.extend({ 
    hideSuperfishUl: methods.hide, 
    showSuperfishUl: methods.show 
}); 

})(jQuery); 

回答

0

默認值快魚-modified.js定義(/主題/默認的自舉/ JS /模塊/ blocktopmenu/JS/superfis H-modified.js)文件圍繞線230

沒有爲hoverClass以及默認值:

hoverClass: 'sfHover',

嘗試用替換它:

hoverClass: '',