【问题标题】:Div not properly hiding in IEDiv 没有正确隐藏在 IE 中
【发布时间】:2009-05-03 20:13:16
【问题描述】:

我的网站上只有几个 div - 在加载时我希望隐藏其中一些,显示一些。我像这样隐藏我不想要的:

$(".divToHide").hide();

它在 Chrome、Firefox、IE8 和 Opera 中运行良好......它在 IE6 中没有(我还没有在以前的版本上测试过......) - 当我加载页面时,所有 div 都被正确隐藏。当我单击使其中一个可见的链接时,它会正确显示。当我单击应该隐藏第一个 div 并显示另一个的不同链接时,问题就会出现。第一个 div 的文本是隐藏的,但图像会保留并挡住新显示的 div。我很确定这是一个错误——当我放大或缩小页面时,本应隐藏的 div 突然消失了——它们只有在我加载页面时才可见。

有办法解决吗?

编辑:我正在使用 jQuery v1.3.2

编辑: 不幸的是,使用addClass 添加声明display: none 的css 类的解决方案并没有真正起作用——一开始似乎是这样,但问题仍然存在。

更新:我写的js文件可以找到here,而htmlhere。我遇到的问题是,当您从一个投资组合转到另一个投资组合时,第一个的图像会停留在那里阻碍下一个,即使它应该被隐藏(下面的文本正确更改)。当您尝试放大/缩小页面时,错误会消失。
我曾经使用$("#divId").hide() 隐藏所有投资组合,但正如下面所指出的,我现在使用$(".classToHide").hide()

更新:问题已在 IE8 上解决 - 我忘记包含标准模式声明...但是,在 IE6 上仍然是问题。

【问题讨论】:

  • 你为什么用一个id来隐藏多个div?该错误可能与不正确的 id 使用有关。
  • 如果您可以提供指向您的来源的链接,它可能有助于解决您的问题。

标签: javascript jquery internet-explorer html hide


【解决方案1】:

您正在使用 ID 选择器隐藏多个 div?

尝试为这些 div 赋予一个“divToHide”类,然后使用:

$(".divToHide").hide();

也许 IE8 以不同于其他浏览器的方式处理重复的 id..

【讨论】:

  • 我一开始隐藏了多个 div,但后来想有选择地显示它们。在这种情况下,添加/删除类而不是调用 show()/hide() 会更好吗?我怀疑这会对我的问题有所帮助(尽管我会尝试),但是出于其他原因会更好吗?
  • 添加/删除“隐藏”css 类的好处是您可以随时使用 $(".hidden") 轻松选择所有隐藏的 div。
  • 如果需要,您还可以使用 ID 和类进行组合。这样你就可以在启动时使用 $(".divsToHide").addClass("hidden"); 轻松隐藏所有 div。并使用 $("#widget4Div").removeClass("hidden"); 使 div 有选择地再次可见;
【解决方案2】:

只是想一想:您使用的不是旧的(IE8 之前)版本的 jQuery,是吗?

编辑:不,grycz 使用的是当前版本。

【讨论】:

  • 是的,1.3.2 是最新的。这个理论就这么多。 8-)
【解决方案3】:

编辑:简化为使用 toggleClass()

您可以尝试手动执行此操作,例如切换名为“隐藏”的 CSS 类。它可能看起来像这样:

function myToggle(element_id)
{
    mydiv = $('#' + element_id);
    mydiv.toggleClass("hidden");;
}

你的 css 文件会有:

.hidden
{
    display:none;
}

我还没有对此进行测试,但如果这确实是 jQuery/IE8 中的一个错误,我想你会想考虑一下这种解决方法。

【讨论】:

  • toggleClass('hidden');或者只是 toggle() 伙计们
  • 嘿,忘了toggleClass。估计是我太久没玩了。 :-P 已在我的帖子中修复。
  • 更正:它似乎工作,但它仍然给我同样的问题......从一开始就是hidden 很好,但是当我稍后分配它时,它不会消失在 IE 下。
  • 我认为其他地方的评论也是一个问题,即您使用 id 来定位多个元素,这在 HTML 标准中在技术上是非法的,但在某些浏览器中仍然有效。更好的方法是为所有要隐藏的 div 添加一个类(例如“hide-all”),然后使用 $(".hide-all").toggleClass("hidden") 隐藏所有其中。
  • 对 - 我已经更改了隐藏 div 以使用类而不是单个 ID 的功能 - 问题仍然存在于 IE 上。请查看问题的来源 - 所有的东西都在那里。
【解决方案4】:

您确定在页面加载时甚至会调用 hide() 函数调用吗?尝试在该函数调用之前放置一个alert('hi'),看看在 IE8 中是否会发生这种情况。

【讨论】:

  • 是的 - 首先是因为当我放大/缩小时 div 就会消失。其次,因为警报出现了:)
【解决方案5】:

试试

$("#divToHide").css('display:none');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 2021-09-02
    • 2018-01-24
    • 2012-05-18
    • 2012-12-16
    相关资源
    最近更新 更多