2013-04-11 94 views
0

我想排序表格行Asc和Desc時點擊列標題。它在Firefox和Chrome中工作正常,但不能在IE中工作。我嘗試過不同的方式,比如獲取最新版本的jquery,我仍然遇到同樣的問題。 有些列以alphebetically排序,有些按數字排序,有些會根據空值進行排序,最後在checkstate排序。我基於類進行排序。Jquery排序錶行不工作在IE中,但在所有其他瀏覽器工作

我無法使用插件。這是我的。爲什麼在除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點擊運行,但是當它比較行時,它會全部混淆並隨機附加它們(即 - 不排序)

+0

不知道這是否會令任何區別,但是你錯過了這行的最後一個分號:VAR TBOD = $(本).closest(「表」)找到(「TBODY 「) – bUKaneer 2013-04-11 15:48:29

+0

謝謝,我沒有看到。沒有修復它,但感謝您指出。 – 2013-04-11 15:54:41

+0

IE中是否有類名的約束?我不禁想,也許IE會提供一個字符限制或最大數量的類,它會除外,明白嗎?有些行會在IE中移動,但有些行根本不會移動。 – 2013-04-11 15:56:28

回答

相關問題