【问题标题】:Hide/show not working in Internet Explorer隐藏/显示在 Internet Explorer 中不起作用
【发布时间】:2013-03-01 22:16:19
【问题描述】:

概述

我正在创建一系列 id 名为“cda2012_#”的 div,其中 # 代表顺序。它们应该出现 8.5 秒,并被序列中的下一个 div 替换。这些 div 将无限循环。下面的脚本在 div 加载后在页面底部执行。

想要的效果

由 id 标记的特定 div 将在彼此之间按顺序无限循环。 (在 FF/Chrome 中工作)

IE9 出错

第一个 div 显示正常,但第二个 div 不会显示,也不会循环回到序列中的第一个 div。

UDPATE: IE9 中的问题是序列中的下一个 div 不显示。在 Firefox/Chrome 中,div 将无限循环 8.5 秒。

更新 2: 根据请求在 div id 和脚本中从 - 切换到 _。仍然没有在 IE9 中按顺序拉下一个 div。

更新 3:根据建议更新了隐藏的 divs 元素以具有背景颜色。这不会影响 IE9 中 div 之间的循环。

更新 4: 封装代码使用:j(function() {...});


解决方案

  • 在j(function() {...})中封装代码;
  • 将“-”(连字符)切换为“_”(下划线)

由于@Beetroot-Beetroot 的输入而得到修复


<script>
    var divs = j('div[id^="cda2012_"]').hide(),
        i = 0;

    (function cycle() { 
        divs.eq(i).fadeIn(450)
            .delay(8500)
            .fadeOut(450, cycle);

            i = ++i % divs.length;
    })();
</script>

这是一个出现在 HTML 脚本上方的示例 div:

<div id="cda2012_1">
    <div id="table-hd">Project Title</div>
    <div id="table-bd">
        <span id="table-q">
            <img align="middle" alt="" src="http://aiawa.org/associations/12413/files/cda2012-hogue.png" />
            <hr id="table-hr" />
            Firm: <a href="http://lmnarchitects.com/" target="_blank">LMN</a><br />
            Photo: <a href="http://lmnarchitects.com/" target="_blank">LMN</a></span><span id="table-v"><br />
            <center>
                <span id="table-h2">Did you know?</span>
            </center><br />
            Students and faculty at Central Washington University can assemble wind turbines or test photovoltaic technologies on the &quot;working roof&quot; of their 92,000GSF LEED Platinum facility. <br />
        </span>
    </div>
</div>

【问题讨论】:

  • 我不确定它是否会有所帮助,但您可以通过在每个周期将活动 div 附加到其容器来取消 i 计数器。在每个循环开始时,使用 divs.eq(0) 选择轮换中的下一个 div。
  • 看看这个 SO 帖子,可能是相关的。 stackoverflow.com/questions/1284163/…
  • 一些其他的尝试(i)从元素 id 中清除连字符以支持下划线,(ii)将您的 javascript 包装在 j(function() {...}) 中,并且(可选)将脚本移动到文档头部.
  • 另外,请确保文档的顶部有一个 ..>。如果它已经有一个,那么确保它是 HTML5 变体&lt;!DOCTYPE html&gt;

标签: javascript jquery html internet-explorer


【解决方案1】:

我相信 fadeIn[Out] - 影响 CSS 不透明度 - 在旧版本的 IE 中不起作用。

【讨论】:

  • 这会导致 div 不隐藏吗?隐藏/显示功能是我所关心的。
  • 我为每个被淡化的 div 添加了背景颜色。这并不能解决 IE9 隐藏第一个 div 而不显示第二个的问题。
  • FadeIn[Out] 在 IE9 中工作。这可能是由于使用了背景颜色。由于@Beetroot-Beetroot 建议将代码封装在 j(function() {...}) 中,所以没有显示本身已得到修复
【解决方案2】:

只是对问题所在的一些快速想法:

  • 您使用的 IE 浏览器是什么版本?尝试更新。

  • 使用来自 google 的最新版本的 JQuery。

  • *可能存在问题“因为浏览器理解 javascript 而不是独立的 jQuery sn-ps。jQuery 将我们的代码转换为普通的 javascript 代码,以便浏览器能够解释我们所说的内容。Javascript 库是快捷方式。 如果您要在库本身加载之前加载库插件,则该插件将被浏览器视为一堆 mumbo-jumbo。在加载库之前,这段代码的 sn-p 意味着绝对没有任何意义。” *(来源:http://css-plus.com/2010/03/6-steps-to-take-if-your-jquery-is-not-working/

  • 希望这有帮助,IE 无论如何都是染色浏览器。祝你好运。

【讨论】:

  • 我使用的是 IE9。它是最新的。它处于浏览器模式:IE9 和文档模式:IE9 标准
  • 我们很多人需要支持的不仅仅是最新版本的 IE。 IE 不会死。这不是思考问题的好方法。应该像 OP 一样尽可能多地支持他们的目标受众。
  • Bugga,你不要到处告诉人们如何做事。此外,IE 是一个垂死的浏览器。他们将自己与生产力和财务增长分开是微软自己的错。作为一名 Web 开发人员,您没有时间或金钱来为这种愚蠢的行为构建东西。您构建以呈现新想法、新代码(HTML 5、CSS3 / CSS4 和 JQUERY 2),当您使用这些新功能构建时,您会迫使您的社区放弃垂死的产品(例如:IE)并选择新的,所以他们可以体验这些强大的功能。
  • 至于大卫,你是最新的,你有没有尝试添加一对括号: .fadeOut(450, cycle); ----->> .fadeOut(450, cycle());
  • 是的,IE 仍然是一个主要的参与者,并且自从 HTML5 的引入以来,它与任何其他主流浏览器的标准都没有更多的脱节。几年前,论坛上充斥着“在 IE 中不起作用”的问题。现在你可能会看到同样的说法 FF/Chrome/Opera/Safari。不过 Konqueror 不是这样 - 我猜用户群很小?
【解决方案3】:

------------- 阅读这篇关于如何修复 FadeIN 和 FadeOUT 功能的文章---------------

它与 IE 进行不透明度和颜色更改所需的“过滤器”有关。

链接:: http://www.kevinleary.net/jquery-fadein-fadeout-problems-in-internet-explorer/

【讨论】:

  • 我为每个被淡化的 div 添加了背景颜色。这并不能解决 IE9 隐藏第一个 div 而不显示第二个的问题。
【解决方案4】:

不久前我做了类似的事情,代码(从记忆中)是这样的:

j(function() {
    var projectContainer = j("#.....");//the parent div
    projectContainer.find('.projects').hide();//select by class
    var t_ref, allowCycle = true;
    function cycle() {
        projectContainer.find('.projects:last').hide().prependTo(projectContainer).fadeIn(450);
        if(allowCycle) t_ref = setTimeout(cycle, 8950);
    };
});

据我所知,IE(版本?)没有问题。

变量t_refallowCycle 允许在必要时停止循环。

【讨论】:

  • 那个页面是&lt;!DOCTYPE ... XHTML 1.0 Transitional ...&gt;,而不是&lt;!DOCTYPE html&gt;
  • 不幸的是,我的公司无法自行更改页面的那部分(长话短说,异地 AMS)。看起来我将无法设置 DOCTYPE。有没有解决的办法? @Beetroot-甜菜根
  • 根据一项建议,我尝试将 id 更改为 class。不走运,所以我把它改回 id。
  • 将代码封装在 j(function() {...}) 中有效!除此之外,我不必修改我的原始脚本并使用下划线而不是连字符。不需要进行其他更改,我也不需要上面的代码。我欠你一个冷的,@Beetroot-Beetroot
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 2017-10-14
  • 1970-01-01
相关资源
最近更新 更多