我有一个页面设置了一个输入文本字段,通过JQuery toggle()隐藏了“display:none”,以及一个位于其下方一定距离的锚标记。当我使用锚标记时,无论是通过在网址中输入它还是通过点击引用它的链接,我通常都会认为它会将我带到锚点所在的位置,如下所示:
working as expected http://i.snag.gy/1UavI.jpg
然而,当我在IE8上查看它时,它看起来像这样:
not working as expected http://i.snag.gy/dbyty.jpg
我想要的是隐藏的输入字段,以及正确的锚定行为。
当我从代码中删除隐藏的输入时,它修复了间距,这使我认为IE正在考虑隐藏输入所用的空间,以便在屏幕上滚动到锚点的位置。
这是我尝试在jsfiddle上重现问题的最佳尝试,但遗憾的是我没有成功。我无法发布我看到错误的实际源代码,但我会尝试提供任何其他信息。
答案 0 :(得分: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>
希望有所帮助。
以下是编辑过的小提琴的链接。
答案 1 :(得分:0)
我弄清楚我昨天的问题是什么。
在IE8上,如果使用window.location.hash导航到屏幕上的特定区域,则必须确保在完成所有JQuery .hide()或.toggle()调用之后执行此操作。发生的事情是,我首先导航到锚标签,然后发生hide()。隐藏将减少页面上的空间量,从而用它拉动整个页面。
通过简单地让页面在window.location.hash之前执行hide,我解决了我的问题。我不太清楚为什么这个间距问题在Firefox或Chrome上没有发生。