javascript - ColumnChooser free-jqgrid 不适用于 IE9

标签 javascript jquery jqgrid free-jqgrid

将我的应用程序从 jqGrid 4.6 升级到 free-jqgrid 4.8 后,columnChooser 功能无法正常工作。仅适用于 IE9。演示可在此处获取:http://jsfiddle.net/2tkkqbeq/15/ (请用IE9模式打开)。
我认为问题出在 jqGrid 库中的 apply_perm 函数 中:

   apply_perm: function () {
        var perm = [];
        $("option", select).each(function () {
            if ($(this).is("[selected]")) {
                $self.jqGrid("showCol", colModel[this.value].name);
            } else {
                $self.jqGrid("hideCol", colModel[this.value].name);
            }
        });
    }

当我改变if ($(this).is("[selected]"))if ($(this).is(":selected"))它开始起作用了。

is("[selected]") 和有什么区别和is[":selected"]

最佳答案

感谢您的错误报告!我喜欢演示中的问题,它可以用来重现问题。

这是 jqGrid 4.7 中的错误(请参阅 the line 并将其与 jqGrid 4.6 的 the corresponding line 进行比较)。对所选选项的最佳测试是使用 .is(":selected")。 jQuery 的相应实现使用了不同版本的 Web 浏览器中实现的所有细节。选择器 .is("[selected]") 表示 selected 属性存在且具有某个值。通常,属性 selected 的值应为 "selected" (selected="selected")。我使用您的演示进行的测试表明,在 IE9 中,有 selected="" 值,并且测试 .is("[selected]") 返回错误值 true 而不是 .is(":selected") 提供正确的值 false

我将免费 jqGrid 代码中的行以及关闭选择器 $("option[selected]", select) 修复为 $("option", select).filter (“:选定”)

我已将修复程序发布到 github。因为您在演示中使用了 URL //rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js,所以演示现在将使用修改后的代码。您现在可以在 IE9 中验证它是否正常工作。

关于javascript - ColumnChooser free-jqgrid 不适用于 IE9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29646959/

相关文章:

jquery - JQUERY 中用于加载 JQGRID 的选项卡

javascript - 转换分钟 -> hh :mm. 可能的最短代码(一行?)

javascript - 如何在鼠标悬停时改变颜色时逐渐放大,以及如何在鼠标房上逐渐缩小和褪色

jquery - 使用 jquery.BlockUI 插件禁用整个 jqGrid(jQuery 网格插件)

javascript - 想要一个可用于显示 map (不是实际 map )的插件

javascript - 使用 ng-click 切换 3 个不同的 div

jquery - 仅在首次加载 jqgrid 时运行方法

javascript - 从对象构造函数外部的函数访问实例

javascript - Jquery 搜索类检查它是否有特定的 id

javascript - 递归删除javascript对象中的数组