ColumnChooser free-jqgrid 不适用于 IE9
ColumnChooser free-jqgrid is not working on IE9
将我的应用程序从 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 中的错误(参见 jqGrid 4.6 的 the line and compare it with the corresponding line)。所选选项的最佳测试是 .is(":selected")
的用法。 jQuery 的相应实现使用不同版本的 Web 浏览器中实现的所有细节。选择器 .is("[selected]")
表示 selected
属性存在并具有某个值。通常,属性 selected
的值应为 "selected"
(selected="selected"
)。我使用您的演示进行的测试表明,在 IE9 的情况下,一个具有 selected=""
值,而测试 .is("[selected]")
returns 错误值 true
而不是 .is(":selected")
提供了正确的值false
.
我将免费 jqGrid 代码中的行和关闭选择器 $("option[selected]", select)
修复为 $("option", select).filter(":selected")
。
我已将修复程序发布到 github。因为您在演示中使用了 URL //rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js
那么演示现在将使用修改后的代码。您可以验证它现在在 IE9 中是否正常工作。
我有与此过滤器相关的问题 :selected。
同样在演示中,如果您删除一列并立即读取该列而不关闭列选择器,该列将保持隐藏状态,因为 $(this).is(":selected") return false (我不明白原因但这发生在 chrome 和我测试过的边缘)
如果我改用 [selected] 它会起作用...
将我的应用程序从 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 中的错误(参见 jqGrid 4.6 的 the line and compare it with the corresponding line)。所选选项的最佳测试是 .is(":selected")
的用法。 jQuery 的相应实现使用不同版本的 Web 浏览器中实现的所有细节。选择器 .is("[selected]")
表示 selected
属性存在并具有某个值。通常,属性 selected
的值应为 "selected"
(selected="selected"
)。我使用您的演示进行的测试表明,在 IE9 的情况下,一个具有 selected=""
值,而测试 .is("[selected]")
returns 错误值 true
而不是 .is(":selected")
提供了正确的值false
.
我将免费 jqGrid 代码中的行和关闭选择器 $("option[selected]", select)
修复为 $("option", select).filter(":selected")
。
我已将修复程序发布到 github。因为您在演示中使用了 URL //rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js
那么演示现在将使用修改后的代码。您可以验证它现在在 IE9 中是否正常工作。
我有与此过滤器相关的问题 :selected。 同样在演示中,如果您删除一列并立即读取该列而不关闭列选择器,该列将保持隐藏状态,因为 $(this).is(":selected") return false (我不明白原因但这发生在 chrome 和我测试过的边缘) 如果我改用 [selected] 它会起作用...