Javascript:在IE6 / 7/8中切换z-indexed DIVs可见性

时间:2011-03-30 13:30:18

标签: javascript jquery css html5 internet-explorer-8

我试图使用jquery创建一个简单的popover效果,类似于iOS中的popover。代码在ff,safari,chrome和ie9中运行得非常好,但是弹出窗口不会出现在ie6-8中。

我正在使用jquery 1.5.1,以及html5shiv,以便我可以使用html5标签:

<!--[if lt IE 9]>
<script src="html5shiv.js"></script>
<![endif]-->
<script defer src="jquery.min.js"></script>
<script defer src="effects.js"></script>

相关的javascript代码是:

$(document).ready(function() {
    $('#button').live('click', function($e) {
        $e.preventDefault();
        $('#popover').fadeToggle('fast');

        if ($('#button').hasClass('active')) {
            $('#button').removeClass('active');
        } else {
            $('#button').addClass('active');
        }
    });
});

popover的相关CSS代码是:

#popover {
    display: none;
    position: absolute;
    top: 43px;
    left: 5px;
    z-index: 5000000;
}

IE单击按钮时正确添加和删除类。此外,当我将popover的CSS更改为display:block时,弹出窗口会在IE中加载页面时正确显示。但是,出于某种原因,IE似乎无法切换div的显示。我已经尝试将javascript代码放在页面底部,添加type =“text / javascript”,将fadeToggle更改为简单显示,使用getElementById更改popover的css,我认为我见过的所有其他解决方案这里涉及IE和jquery,click(),live()和/或z-index。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我过去使用过的一个解决方案是在click事件中添加页面上的元素。例如,在您的情况下:

$('#button')。live('click',function($ e){   $ e.preventDefault();   $(本)。之后( ''); ... });