【问题标题】:IE 11 addClass + removeClassIE 11 addClass + removeClass
【发布时间】:2015-11-14 04:28:45
【问题描述】:

我无法让此代码在 Internet Explorer 11 上运行。我知道此段导致了问题。如果我在此代码处于活动状态的情况下上传文件,IE 11 会将我网站的整个部分显示为完全空白。没有它,它会在我的网站上显示信息,但它的功能显然不一样。

我查了http://caniuse.com/上的各种功能,据它说,只有部分支持removeClass和addClass,这可能是问题所在。是否有某种插件或不同的命令可以使其与 IE 11 兼容?

$(window).on('hashchange', function () {
    var ImageContainer = $('.tabs > div'),
    hash = window.location.hash !== '' ? window.location.hash: '#about';

    console.log(hash);

    ImageContainer.hide();
    ImageContainer.filter(hash).show();
    $('<img/>').removeClass('selected');
    $('a[href="' + hash + '"]', '.ImageContainer').addClass('selected');
}).trigger('hashchange');   

编辑 - 标记

<div class="tabs">

<div id="about">    
<h3>Headline</h3>
<p>Body Text</p>
</div>

<div id="first">
<h3>Different Headline</h3>
<p>Different Body Copy</p>
</div>

</div>

<div id="owl-demo" class="owl-carousel owl-theme">

<div class="ImageContainer">
    <div id="Color">
    <h2>Headline</h2> 
</div>

<div class="photo grow">  
     <a href="#first" id="1">    
     <img src="" />
     </a>
     </div>

 <div class="ImageFooter" id="Purple">
     <p class="ImageContainerP">Below Text</p>
     </div>
  </div>

 </div>

【问题讨论】:

  • caniuse.com 没有提供有关浏览器对 jQuery 的支持的信息,可以在 jQuery 找到这些信息
  • "我在caniuse.com上查找了各种 jquery 命令" O.o - jQuery 方法不是该站点的一部分,因为该站点仅列出了本机功能。
  • @GeorgeLee 感谢您的指导。我会调查的。

标签: jquery internet-explorer


【解决方案1】:

你应该使用正确的选择器:

对于这个 HTML:

<div class="ImageContainer">
    <a href="#1234"><img class="selected" src="" /></a>
</div>

JS:

$('img').removeClass('selected');
$('a[href="#1234"]', '.ImageContainer').addClass('selected');

输出:

<div class="ImageContainer">
    <a href="#1234" class="selected"><img src="" class=""></a>
</div>

在 IE 11 和 FF 42 上测试:

jsfiddle:http://jsfiddle.net/ghorg12110/h1xtty4n/

【讨论】:

  • 感谢您的帮助。不幸的是,这并没有解决我的问题,但有助于缩小搜索范围。我的问题可能隐藏在 CSS 或源代码中的某个地方。这对我自己的小提琴很有效:jsfiddle.net/cef1ydna 再次感谢!
【解决方案2】:

问题在于 IE 如何处理哈希。它不像其他浏览器那样默认为空字符串,它默认为'#'。此外,您应该在 IE 中设置可靠性位置,而不是设置哈希值。

hash = window.location.hash !== '' ? window.location.hash: '#about';

变成

hash = window.location.hash;
if (hash !== '' || hash !== '#') {
   hash = '#about';
   window.location = hash;
}

标记未呈现,因为它没有重置条目哈希并给出错误消息“#”不是过滤器的有效选择器。

【讨论】:

  • 你是救生员!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
相关资源
最近更新 更多