2

我遇到了 jQuery 和 IE9/IE10 的问题:我有一个包含表格列表的简单页面(有时有很多行),如果用户可以通过单击隐藏他想要的表格,我希望这样。因此,如果用户单击表的名称,我会这样做,最后一个会向上滑动。它是这样的:

$(thisId + "title").bind('click', function() { 
     $(thisId + "span div:not(" + thisId + "title)").each(function() {
          $(this).slideToggle("medium");
     });
});

一切正常!表格向上滑动,并且内容的高度在必要时会缩小或增长。在 FF、Chrome 和 Opera 中,我没有问题。在 IE 中,内容会缩小或增长,但滚动条的高度根本不会改变!因此,用户可以沿旧内容的高度滚动(但那里不再显示任何内容)。简而言之,IE 保持旧窗口的高度。如果我缩小任务栏中的窗口并回调它,那么高度是正确的,就像页面被刷新一样。

我试图通过每次用户向下或向上滑动其中一张表时重新计算来更改窗口的高度,但我认为这有点混乱,它似乎不适用于 IE10。

我以前从来没有遇到过这个问题,它让我发疯。谁能帮我一把?将不胜感激。谢谢!

编辑: 我试图在加载时隐藏每个元素然后打开它们(我知道要打开哪些元素,因为我必须将此信息存储在数据库中......)。它工作得很好......但是现在当我向下滑动其中一张桌子时,我有一个水平滚动条......

编辑 2:我做了一些有点难看的东西,似乎在 IE9 中有效,但在 IE10 中无效。加载页面时,如果必须隐藏其中一个表,我会隐藏滚动条然后再次显示。所以,页面的高度是正确的。然后,如果用户决定隐藏另一个表,我会做同样的事情并通过这样做来调整窗口的高度:

var newHeight = $(window).height() - $(this).height();
$(window).height(newHeight);

在 IE 中,似乎存在“延迟”问题,例如一次要做的事情太多,因此滚动条没有更新。其他浏览器没有问题。

编辑 3:所以最后,我用 .show() 和 hide.() 重新进行了测试,并在表格关闭时添加了这些行

var newWinHeight = $(window).height() - tempHeight;
$(window).height(newWinHeight);
$("body").css("overflow-y","hidden","important");
$("body").css("overflow-y","auto","important");

它适用于 FF、Chrome、Opera 和 IE 9!但不幸的是不是 IE 10。似乎 IE 需要重新加载“整个事情”才能获得正确的值。

4

0 回答 0