2012-11-01 72 views
0

我使用jQuery tablesorter插件的jQuery的tablesorter textExtraction

網頁是在這裏:http://redbluffbullsale.com/bulls-listings

我有一個複雜textExtraction函數定義如下:

var jgExtraction = function(node) { 
    if (node.childNodes[0].length > 0) { 
    return node.childNodes[0].innerHTML; 
    } else { 
    return node.innerHTML; 
    } 
} 

jQuery('#bullsTable').tablesorter({ 
    textExtraction: 'jgExtraction', 
    headers: { 
    0 : {sorter: false}, 
    13: {sorter: 'digit'}, 
    14: {sorter: 'digit'} 
    } 
}); 

在一些列(13 14)有數據可以採用以下格式:

number(例如:0.9,2.3,4,-2,-2.5等) 文字(字母I)加號(I + 2.3,I-0.9,I + 1.4等) 加號加號(+2.4,+3.1,+0.9等)

在服務器上我控制列數據,以便如果它是數字或負數,它將被轉儲到<td>中,但是如果列數據有I +,I-或a +,那麼該列具有I +,I-或+從數分離與<跨度>標記,如:

<td>-1.4</td> 
<td>I+<span>1.6</span></td> 
<td>I-<span>3.4</span></td> 
<td>+<span>2.2</span></td> 

我jgExtraction應該返回的innerHTML如果沒有跨子節點,或返回,如果它的childNode [0](跨度)的內容EXI STS。排序不適用於使用I +或I-的列。您可以通過查看上面的網址查看出了什麼問題。

我在做什麼錯?

回答

2

上面的代碼有幾個問題。

  • 文本提取函數的名稱不應該添加一個字符串

    textExtraction: 'jgExtraction', // wrong 
    textExtraction: jgExtraction, // correct 
    
  • jgExtraction功能,檢查子節點的長度,第一項

    的不是長度
    if (node.childNodes[0].length > 0) { // wrong 
    if (node.childNodes.length > 1) { // correct 
    
  • 檢查其innerHTML時,文本節點將返回undefined。應該反正靶向跨度:

    return node.childNodes[0].innerHTML // wrong 
    return node.childNodes[1].innerHTML; // target the span 
    

下面是修改後的代碼& a demo

var jgExtraction = function(node) { 
    if (node.childNodes.length > 1) { 
     return node.childNodes[1].innerHTML; 
    } else { 
     return node.innerHTML; 
    } 
} 

如果你有興趣,我有一個fork of tablesorter,讓您排序空表單元格頂部,底部或將它們視爲具有零值(默認行爲) - 請參閱this demo

+0

您可以請一個看看我的問題在這裏http://stackoverflow.com/questions/14546186/tablesorter-and-multi-textextraction-in-jquery? –