IE8绝对/相对定位元素不会显示

时间:2013-05-29 15:00:53

标签: javascript jquery html css internet-explorer

我有一个div css位置的列表(inline-block)。里面有relative位于ul的隐藏位置。所以我尝试通过添加一些类将此div转换为absolute。通常,当我们点击列表时,列表会显示出来。它适用于其他浏览器,但 IE8 / 9

我谷歌“即绝对定位元素消失”并尝试了他们的解决方案,但没有运气。

您可以在此处进行测试:http://jautochecklist.googlecode.com/svn/doc/test_popup.html

您可以保存(Ctrl + S)页面并编辑脚本进行测试。

位置转换从第956行(jAutochecklist.js)开始。 wrapper是我要移动的元素

if (data.settings.absolutePosition){
            var offset = wrapper.offset();
            var dummy = $('<div></div>').attr('class', pluginName + '_dummy ' + pluginName + '_wrapper').width(wrapper.width()).height(wrapper.height());
            obj.after(dummy);
            //move the list so the absolute position can become effective
            wrapper.addClass(pluginName + '_absolute').appendTo('body').css({
                top: offset.top + 3,
                left: offset.left
            });
            elements.input.focus();
        }

此外,当我们在列表打开/聚焦时关闭弹出窗口时,在IE中,列表会保留在屏幕上。

小提琴:http://jsbin.com/anokod/1/edit

2 个答案:

答案 0 :(得分:1)

我通过使用绝对位置删除包装器上的css样式filter来解决问题。

在IE中,如果在同一个定位元素上有2个属性filter:progid:DXImageTransform.Microsoft.gradient...,则会导致此错误。

答案 1 :(得分:0)

删除高度:20px的样式jAutochecklist_wrapper