javascript - js Accordion 不工作 IE9

标签 javascript jquery html css internet-explorer

此页面上的第一个问题。我有一个动画 css/js Accordion ,我从这个页面 http://codepen.io/chriswrightdesign/pen/cmanI我刚刚在 jsp web 应用程序中实现了它。

它在 Chrome、Firefox 和 IE 11 中运行良好。但在 IE 9 中无法正常显示。据我所知,我需要对一些 js 组件(classList、setAttribute 和 querySelectorAll)进行 polyfill,以便让功能在最后一个导航器中正常工作。

老实说,我对如何填充这段 js 代码一无所知。所以如果有人能帮助我,我真的很感激。

    //uses classList, setAttribute, and querySelectorAll
//if you want this to work in IE8/9 youll need to polyfill these
(function(){
    var d = document,
    accordionToggles = d.querySelectorAll('.js-accordionTrigger'),
    setAria,
    setAccordionAria,
    switchAccordion,
  touchSupported = ('ontouchstart' in window),
  pointerSupported = ('pointerdown' in window);

  skipClickDelay = function(e){
    e.preventDefault();
    e.target.click();
  }

        setAriaAttr = function(el, ariaType, newProperty){
        el.setAttribute(ariaType, newProperty);
    };
    setAccordionAria = function(el1, el2, expanded){
        switch(expanded) {
      case "true":
        setAriaAttr(el1, 'aria-expanded', 'true');
        setAriaAttr(el2, 'aria-hidden', 'false');
        break;
      case "false":
        setAriaAttr(el1, 'aria-expanded', 'false');
        setAriaAttr(el2, 'aria-hidden', 'true');
        break;
      default:
                break;
        }
    };
//function
switchAccordion = function(e) {
    e.preventDefault();
    var thisAnswer = e.target.parentNode.nextElementSibling;
    var thisQuestion = e.target;
    if(thisAnswer.classList.contains('is-collapsed')) {
        setAccordionAria(thisQuestion, thisAnswer, 'true');
    } else {
        setAccordionAria(thisQuestion, thisAnswer, 'false');
    }
    thisQuestion.classList.toggle('is-collapsed');
    thisQuestion.classList.toggle('is-expanded');
        thisAnswer.classList.toggle('is-collapsed');
        thisAnswer.classList.toggle('is-expanded');

    thisAnswer.classList.toggle('animateIn');
    };
    for (var i=0,len=accordionToggles.length; i<len; i++) {
        if(touchSupported) {
      accordionToggles[i].addEventListener('touchstart', skipClickDelay, false);
    }
    if(pointerSupported){
      accordionToggles[i].addEventListener('pointerdown', skipClickDelay, false);
    }
    accordionToggles[i].addEventListener('click', switchAccordion, false);
  }
})();

最佳答案

对于一个,classList在 IE9 中不受支持,因此如果需要 IE9 支持,您肯定必须构建后备。

关于javascript - js Accordion 不工作 IE9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33785110/

相关文章:

javascript - 从下拉列表中选择选项

javascript - img src 路径仅在悬停 jquery 时给出第一个子项

javascript - 为什么我不能使用 jquery 访问 ajax 提取的内容

javascript - 带有模板化元素句柄的 knockout 绑定(bind)

html - 使用 CSS 对按钮进行“单击”动画效果

javascript - 从 JavaScript 访问任意 Objective-C 对象的方法和属性

javascript - 无法使用 Wcf 服务在 Angular JS 中根据 ID 检索单个记录

javascript - jqPlot 饼图无法正确渲染

html - 在表格单元格上方放置一个按钮并垂直对齐单元格中的文本

css - 如何在 bootstrap 中使用 Lesser div