Jquery排序表行不能在IE中工作,但可以在所有其他浏览器中工作



我试图排序表行Asc和Desc时,单击列标题。它在firefox和Chrome中工作良好,但在IE中不工作。我尝试了不同的东西,比如获得最新版本的jquery,我仍然得到同样的问题。有些列按字母顺序排序,有些按数值排序,有些按空值排序,最后还有一些按checkstate排序。我在按类排序。

我不能使用插件。这是我有的。为什么这个工作在所有浏览器除了IE?我已经看了又看,我找不到这样的例子,有人排序相同的方式。任何信息都会有帮助的。谢谢!

这是jquery-

<script type="text/javascript">
$(document).ready(function () {
    $('.s').click(function () { //this is my header click
        var NotOptional;
        var checkState;
        if ($(this).hasClass('o')) { //optional column
            NotOptional = false;
        } else {
            NotOptional = true;
        }
        if ($(this).hasClass('cs')) { //class on my input items
            checkState = true;
        } else {
            checkState = false;
        }

        var o = $(this).hasClass('asc') ? 'desc' : 'asc';
        $('.s').removeClass('asc').removeClass('desc');
        $(this).addClass(o);
        var colIndex = $(this).prevAll().length;  //getting the rows
        var tbod = $(this).closest("table").find("tbody")
        var rows = tbod.find("tr").not('.first');
        rows.sort(function (a, b) {
            if (checkState == true) {   //if its a check box or radio
                var A = $(a).find("td input").eq(colIndex);  //getting checkstate
                var B = $(b).find("td input").eq(colIndex);
                if (A.is(':checked') == true) {
                    A = 1;  //setting row value to compare
                } else {
                    A = 0;
                }
                if (B.is(':checked') == true) {
                    B = 1;
                } else {
                    B = 0;
                }
                if (A < B) {  //returning compare for input
                    return A < B;
                } else if (A == B) {
                    return A == B;
                } else if (A > B) {
                    return A > B;
                }
            } else {
                if (NotOptional == false) {  //not optional never blank 
                    var A = $(a).find("td").eq(colIndex).text().toUpperCase();
                    var B = $(b).find("td").eq(colIndex).text().toUpperCase();
                } else { 
//these don't have to have a value but might contain numeric, letter or a null value
                    var A = $(a).find("td").eq(colIndex).text().toUpperCase();
                    var B = $(b).find("td").eq(colIndex).text().toUpperCase();
                    if (!isNaN(A)) A = Number(A);
                    if (!isNaN(B)) B = Number(B);
                }
            }
            return o == 'asc' ? A > B : A < B;
        });
        $.each(rows, function (index, ele) {
            tbod.append(ele); //appending the rows
        });
    }); //end sortable click

我被困在这个,不能弄清楚为什么IE不理解行排序。如果有帮助的话,这个jquery在aspx页面上由用户控制。我已经检查了标记使用开发工具在IE和类都在那里,它通过Jquery点击运行,但当它比较的行,它得到所有混淆,只是附加它们随机(即-不排序任何东西)

好的。我崩溃了,决定使用Tablesorter。谢谢大家的帮助。我建议任何想要排序表并需要跨浏览器支持的人,使用tablesorter并编写自己的解析器。

http://mottie.github.io/tablesorter/docs/example-parsers-advanced.html

相关内容

最新更新