Jquery IE8 CSS绝对定位随机错误

Jquery IE8 CSS绝对定位随机错误,jquery,css,internet-explorer,internet-explorer-8,css-position,Jquery,Css,Internet Explorer,Internet Explorer 8,Css Position,我在IE8中遇到了一个令人沮丧但看似随机的渲染错误。我在页面上有一些绝对定位的元素(相对于页面主体定位),这些元素的显示由jQuery切换 10个元素中有8次渲染正确,但有时不遵守定位,只将它们放置在浏览器窗口的左上角(实际上绝对定位在顶部0,左侧0) 如果我查看IE开发者工具栏中的元素属性,我可以看到设置了正确的css属性——它们只是没有被应用。如果我调整浏览器窗口的大小,那么元素将跳转到正确的位置-因此它看起来确实像一个真正的渲染错误 我正在页面上设置正确的DOCTYPE,因此浏览器不会处于

我在IE8中遇到了一个令人沮丧但看似随机的渲染错误。我在页面上有一些绝对定位的元素(相对于页面主体定位),这些元素的显示由jQuery切换

10个元素中有8次渲染正确,但有时不遵守定位,只将它们放置在浏览器窗口的左上角(实际上绝对定位在顶部0,左侧0)

如果我查看IE开发者工具栏中的元素属性,我可以看到设置了正确的css属性——它们只是没有被应用。如果我调整浏览器窗口的大小,那么元素将跳转到正确的位置-因此它看起来确实像一个真正的渲染错误

我正在页面上设置正确的DOCTYPE,因此浏览器不会处于怪癖模式


有什么办法可以解决这个问题吗?或者其他人也有过类似的经历吗?

如果我没记错的话,问题发生在试图在显示某个东西之前设置它的位置时

e、 g

  • 隐藏对象
  • 设定位置
  • 显示对象

  • 该对象将出现在左上角,直到再次设置位置或调整窗口大小,迫使IE重新计算位置

    如果我回忆正确,则在显示前尝试设置某个对象的位置时会出现问题

    e、 g

  • 隐藏对象
  • 设定位置
  • 显示对象

  • 对象将出现在左上角,直到再次设置位置或调整窗口大小,迫使IE重新计算位置

    您是否尝试过IE8特定属性:

    -ms-background-position-x:1px; -ms-background-position-y:29px


    它们只在IE8中工作并解决了这个问题。

    您是否尝试过IE8特定的属性:

    -ms-background-position-x:1px; -ms-background-position-y:29px


    它们只在IE8中工作,并且解决了这个确切的问题。

    我也经历过这一点,我使用一些jquery来显示一个绝对定位的元素,该元素只有在单击另一个元素时才可见。奇怪的是,微软继续把基本原理完全弄错。

    我也经历过这种情况,我使用一些jquery来显示一个绝对定位的元素,该元素只有在单击另一个元素时才可见。奇怪的是,微软继续把基本原理完全弄错。

    也有类似的问题->IE8文本框不可编辑(当我的应用程序包装器的位置为:绝对时)。单击仅在边框中工作。填充颜色和透明也不起作用。通过此doctype更改,问题得到解决

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    
    
    

    来源:

    也有类似问题->IE8文本框不可编辑(当我的应用程序的包装器具有位置:绝对时)。单击仅在边框中工作。填充颜色和透明也不起作用。通过此doctype更改,问题得到解决

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    
    
    

    来源:

    是的,这听起来很合乎逻辑-我如何确保添加元素的jquery函数在切换元素之前首先完成?(jquery/javascript绝对不是我的强项)。我看到你添加了更详细的解释,谢谢。为了进一步解释我在使用什么,我有一个选项卡式表单(使用jQuery选项卡)和一个名为AddInSearch的替换选择元素插件。切换选项卡时会调用AddInSearch,此调用会添加绝对定位的元素。现在,从理论上讲,由于事件处理是由AddIncSearch完成的,它应该只在选定元素正确初始化后才工作-但情况似乎并非如此。一个问题:您是绝对定位元素,还是AddIncSearch小部件进行定位?AddIncSearch插件进行定位(如果您认为有帮助,我可以在我的问题中添加代码片段)。tabsshow事件可能在显示选项卡之前触发。请尝试将位置更改代码放入setTimeout(func,0)把它从流程中去掉是的,这听起来很合乎逻辑——我如何确保在切换元素之前添加元素的jquery函数最初完成?(jquery/javascript绝对不是我的强项)。我看到您添加了更详细的解释,谢谢。为了进一步解释我的工作,我有一个选项卡式表单(使用jQuery选项卡)此外,还有一个名为AddInSearch的替换选择元素插件。切换选项卡时会调用AddInSearch,此调用会添加绝对定位的元素。现在,从理论上讲,由于事件处理是由AddInSearch完成的,它应该只在正确初始化选择元素后才起作用-但情况似乎并非如此。一个问题:您是绝对定位元素,还是您的AddInSearch小部件进行定位?AddInSearch插件进行定位(如果您认为有帮助,我可以在我的问题中添加代码片段)。tabsshow事件可能在显示选项卡之前触发。尝试将您的位置更改代码放入setTimeout(func,0)将其从流中取出