【问题标题】:Trouble converting Javascript array into JQuery for IE7 compatibility无法将 Javascript 数组转换为 JQuery 以实现 IE7 兼容性
【发布时间】:2013-03-19 23:20:17
【问题描述】:

我正在尝试在 Javascript 中转换一行,以便该功能在 IE7 中有效。下面是我要转换的代码。显然 IE 不喜欢设置问题所在的类属性。所以我的解决方案是使用 JQuery 翻译它以实现浏览器兼容性。但是我无法将数组转换为 JQuery 可以理解的东西。

这是代码:

    ulAccNm.children[iVal].setAttribute("class", "show");

我尝试了以下方法,但无法正常工作。

  $(ulAccNm).children(jQuery.inArray("iVal")).addClass('show').removeClass('hide');

iVal 的变量转换为父级的子级总数,并循环遍历每个子级以确定是否添加一个类。任何帮助将不胜感激。

【问题讨论】:

  • 什么是ulAccNm?你描述的这个“循环”在哪里?
  • .children(jQuery.inArray("iVal")) 的目的是什么?你只需要.children().eq(ival)
  • 我忘记了 Kevin B。这很好地解决了问题。如果您创建一个答案,我很乐意接受它作为正确的答案。 :)

标签: javascript jquery internet-explorer cross-browser


【解决方案1】:

我在这里猜了很多,但我认为这会转化为:

$($(ulAccNm).children()[iVal]).addClass('show').removeClass('hide');

但是,如果您想对所有孩子执行此操作,则不需要带有 iVal 的显式循环。只需使用

$(ulAccNm).children().addClass('show').removeClass('hide');

【讨论】:

    【解决方案2】:

    您可能只想尝试将循环结构从 for 循环更改为 jQuery.each 方法:

    $(ulAccNm).children().each(function () {
        // Decide if the class needs to be changed
        if (needsToBeChanged)
            $(this).addClass('show').removeClass('hide');
    })
    

    【讨论】:

    • 最终通过使用 Kevin B 对 .children().eq(ival) 的建议进行修复,这使它起作用。
    【解决方案3】:

    最终通过使用 Kevin B 对 .children().eq(ival) 的建议进行修复,这使它起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多