0

我有一个复选框的 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();
            };
        });
    };
};

有谁知道这样做的更好方法?

谢谢

4

2 回答 2

1

我会尝试使用“开始于”选择器,而不是尝试将 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 连接到索引号,因为在循环期间,您只需要检查索引。在该索引处,隐藏函数将隐藏所述索引处的行,因此无需指定要隐藏的行的确切 ID。

于 2012-07-20T12:24:13.020 回答
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>
于 2012-07-20T12:33:25.810 回答