MetisMenu在IE8/9中无法正常工作。

4
在这个页面上http://jolaga.laohost.net/topsleva,我使用metisMenu来切换左侧的类别。它可以完美地工作,只有一个小问题。在IE8/9中,如果我点击“+”图标,子菜单会打开,但是再次点击后它不会隐藏。有人可以帮我解决这个问题吗? 同时,在IE8中出现了一些与bootstrap相关的问题,但我会在另一个问题中发布。
2个回答

2

更改jquery.metisMenu.js的代码,使其在IE8/9中正常工作!问题在于折叠函数在IE中无法正常工作,我使用jQuery的slideUpslideDownslideToggle来解决这个问题。

;(function ($, window, document, undefined) {

var pluginName = "metisMenu",
    defaults = {
        toggle: true
    };

function Plugin(element, options) {
    this.element = element;
    this.settings = $.extend({}, defaults, options);
    this._defaults = defaults;
    this._name = pluginName;
    this.init();
}

Plugin.prototype = {
    init: function () {

        var $this = $(this.element),
            $toggle = this.settings.toggle;

        $this.find('li.active').has('ul').children('ul').addClass('metis-open').css('display', 'block');
        $this.find('li').not('.active').has('ul').children('ul').addClass('metis-close').css('display', 'none');

        $this.find('li').has('ul').children('a').on('click', function (e) {
            e.preventDefault();
            $(this).parent('li').toggleClass('active').children('ul').slideToggle().toggleClass('metis-close').toggleClass('metis-open');

            if ($toggle) {
                $(this).parent('li').siblings().removeClass('active').children('ul.metis-open').slideUp().toggleClass('metis-open');
            }
        });
    }
};

$.fn[ pluginName ] = function (options) {
    return this.each(function () {
        if (!$.data(this, "plugin_" + pluginName)) {
            $.data(this, "plugin_" + pluginName, new Plugin(this, options));
        }
    });
};

})(jQuery, window, document);

0

这在IE8中仍然似乎是一个问题。我发现当我点击父级li时,我必须点击三次才能看到实际的子项。不确定为什么它不能在第一次单击时展开。任何帮助都将是很好的。我实际上正在使用最新版本的metisMenu v1.1.3插件。 - tonyf
我仍然在使用最新版本的IE8中遇到了这个问题。有人成功解决了吗? - Ani
嘿,我能够拥有一个工作菜单而不必点击三次。请阅读此链接:https://github.com/onokumus/metisMenu/issues/7。基本上它说的不是IE8本身的问题,而是任何不支持转换的浏览器,并且您需要先初始化插件。 - Ani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接