0

以下代码在 IE9+、Chrome、Firefox、Safari 上运行良好,但在 IE8 上却不行。它总是将列高返回为 0,宽度不正确。想法?

jQuery 版本:1.9.1

$(function ()
{
    $(window).load(function ()
    {
        // Megamenu
        $("#menu-primary > li").one('mouseenter', function (e)
        {
            var tallestColumnHeight = 0,
            submenuPanelTotalWidth = 0;

            $(".dropdown-menu > .dropdown-submenu", this).each(function ()
            {
                $(this).load();

                tallestColumnHeight = Math.max(tallestColumnHeight, $(this).height())
                console.log('tallest column ' + tallestColumnHeight);

                submenuPanelTotalWidth += parseInt($(this).outerWidth(true), 10);
                console.log('panel width ' + submenuPanelTotalWidth);
            }).height(tallestColumnHeight);

            $(".dropdown-menu > .dropdown-submenu", this).parent().width(submenuPanelTotalWidth);
        });
    }); 
});

文档类型是什么样的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4

2 回答 2

0

如果您使用的是 JQuery 2.0:它不再支持 IE 8。

于 2013-04-29T18:50:32.950 回答
0

事实证明,当元素的可见性(显示:块)通过悬停时的 CSS 设置时,IE8 无法正常工作。用 JS 处理显示就可以了(感谢@zeroflagL 的提示):

有效的代码(当然删除 console.log 行):

$(window).load(function ()
{
    $("#menu-primary > li").on('mouseenter', function (e)
    {
        var tallestColumnHeight = 0,
        submenuPanelTotalWidth = 0;

        $(".dropdown-menu", this).show();
            $(".dropdown-menu > .dropdown-submenu", this).each(function ()
            {
                $(this).load();

                tallestColumnHeight = Math.max(tallestColumnHeight, $(this).height());
                console.log('tallest column ' + tallestColumnHeight);

                submenuPanelTotalWidth += parseInt($(this).outerWidth(true), 10);
                console.log('panel width ' + submenuPanelTotalWidth);

            }).height(tallestColumnHeight);
            $(".dropdown-menu > .dropdown-submenu", this).parent().width(submenuPanelTotalWidth);        
    }).on('mouseleave', function (e)
    {
        $(".dropdown-menu", this).hide();
    });
});
于 2013-04-29T19:56:40.967 回答