我有一个复选框的onChange事件,它触发一个切换某些TR的可见性的函数。我的问题是这段代码只适用于firefox。我希望它适用于ie8。
function toggleVisibility() {
if ($("#ctl00_PageContent_chkVisibility").is(':checked')) {
$('#ctl00_PageContent_freight_rate_column_chaair tr').each(function(i, val) { // Loop through rows in grid
if (i > 9 & i < 28) {
$('#ctl00_PageContent_freight_rate_column_chaair_r' + i).hide();
};
});
}
else {
$('#ctl00_PageContent_freight_rate_column_chaair tr').each(function(i, val) { // Loop through rows in grid
if (i > 9 & i < 28) {
$('#ctl00_PageContent_freight_rate_column_chaair_r' + i).show();
};
});
};
};
有谁知道更好的方法吗?
由于
答案 0 :(得分:1)
我会尝试使用“starts with”选择器而不是尝试将id连接到索引号。尝试这样的事情:
$('#ctl00_PageContent_chkVisibility').change(function () {
toggleVisibility()
});
function toggleVisibility() {
if ($("#ctl00_PageContent_chkVisibility").is(':checked')) {
$('#ctl00_PageContent_freight_rate_column_chaair tr').each(function (i, val) { // Loop through rows in grid
if (i > 9 & i < 28) {
$('input[id^="ctl00_PageContent_freight_rate_column_chaair_r"]').hide();
};
});
}
else {
$('#ctl00_PageContent_freight_rate_column_chaair tr').each(function (i, val) { // Loop through rows in grid
if (i > 9 & i < 28) {
$('input[id^="ctl00_PageContent_freight_rate_column_chaair_r"]').show();
};
});
};
};
您不需要将id连接到索引号,因为在循环期间,您只需要检查索引。在该索引处,hide函数将隐藏所述索引处的行,因此无需指定要隐藏的行的确切ID。
答案 1 :(得分:0)
我猜你在aspx页面上声明了这样的东西:
<asp:CheckBox ID="chkId" runat="server" onchange="toggleVisibility()"/>
这适用于FF但不适用于IE。
删除复选框元素上的onchange属性,并删除函数toggleVisibility 并尝试使用以下命令在jquery中注册您的函数:
<script language="javascript">
$(function () {
$('#ctl00_PageContent_chkVisibility').change(function () {
//
// paste here your existing code , the body of the function toggleVisibility
});
});
</script>