滚动条和slideToggle jQuery的麻烦

时间:2013-07-03 13:14:24

标签: jquery internet-explorer scrollbar slidetoggle

我遇到了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()重新进行测试并隐藏。()并在表关闭时添加了这些行

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需要重新加载“整件事”以获得正确的价值。

0 个答案:

没有答案