1

我有一个页面,该页面通过 JQuery toggle() 设置了一个输入文本字段,其中隐藏了“显示:无”,并且在其下方有一个锚标记。当我使用锚标记时,无论是通过在 url 中输入它还是通过单击引用它的链接,我通常希望它能够将我带到锚点的正上方,如下所示:

按预期工作 http://i.snag.gy/1UavI.jpg

但是,当我在 IE8 上查看它时,它看起来像这样:

没有按预期工作 http://i.snag.gy/dbyty.jpg

我想要的是那里的隐藏输入字段,以及正确的锚行为。

当我从代码中删除隐藏的输入时,它固定了间距,这让我认为 IE 正在考虑隐藏输入使用的空间,以考虑在屏幕上滚动到锚点的位置。

这是我尝试在 jsfiddle 上重现该问题的最佳尝试,但不幸的是我没有成功。我无法发布我看到错误的实际源代码,但我会尽力提供任何其他信息。

http://jsfiddle.net/Xynev/4/

4

2 回答 2

2

我没有任何问题让锚在任何版本的 IE 中工作。但是,我对您在 Fiddle 上的代码感到困惑,因为它并不能反映您的实际要求。

如果没有对问题的某种清晰简洁的描述,就很难回答问题。虽然我已经根据您能够传达的内容构建了一个答案。

如果要在单击 A 标记时切换文本字段。您可以使用以下 jQuery:

$('#testhide').click(function() {
   $('#hide').toggle();
});

testhide 将是 A 标记 ID。所以:

 <a id="testhide" href="#anchor-here">click here</a>

hide 是包含输入的 div 的名称(您可以随意称呼它)。所以:

<div id="hide" style="height:90px">
    <input id="hidden" type="text"/>
</div>

希望有帮助。

这是已编辑小提琴的链接。

http://jsfiddle.net/Xynev/8/

于 2012-08-16T07:39:48.570 回答
0

我昨天发现我的问题是什么。

在 IE8 上,如果您使用 window.location.hash 导航到屏幕上的特定区域,则必须确保在进行所有 JQuery .hide() 或 .toggle() 调用之后执行此操作。发生的事情是,我首先导航到锚标记,然后会发生 hide()。然后隐藏会减少页面上的空间量,从而将整个页面拉上来。

通过简单地让页面在 window.location.hash 之前执行隐藏,我解决了我的问题。我不太清楚为什么这个间距问题没有发生在 Firefox 或 Chrome 上。

于 2012-08-17T17:39:11.627 回答