IE 11 addClass + removeClass

我无法在Internet Explorer 11上使用此代码。我知道此段导致了问题。 如果我上传我的文件激活此代码,IE 11将我网站的整个部分完全空白。 没有它,它将在我的网站上显示信息,但它显然不起作用。

我已经在http://caniuse.com/上查找了各种function,根据它,只有部分支持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(); $('').removeClass('selected'); $('a[href="' + hash + '"]', '.ImageContainer').addClass('selected'); }).trigger('hashchange'); 

编辑 – 标记

 

Headline

Body Text

Different Headline

Different Body Copy

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

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

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

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

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

对于这个HTML:

 

JS:

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

OUTPUT:

 

在IE 11和FF 42上测试:

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