2010-06-02 78 views
1

我正在嘗試返回列中包含特定文本的文本列。使用jquery從列中包含文本的表的列中獲取文本?

例如:我正在尋找的文本是「02/06/2010」。

<table> 
    <tr> 
     <td>Item Title1</td> 
     <td>Item Category</td> 
     <td>02/06/2010</td> 
    </tr>  
    <tr> 
     <td>Item Title2</td> 
     <td>Item Category</td> 
     <td>02/06/2010</td> 
    </tr> 
    <tr> 
     <td>Item Title3</td> 
     <td>Item Category</td> 
     <td>10/07/2010</td> 
    </tr> 
</table> 

對於包含文本的每一行,我都希望能夠遍歷並使用行列中的信息。

我已經設法實現了這一點(見下文),但無法訪問其他列。它也不是很有效率,並且在2000行的桌子上需要10秒左右。

$('table tr td:nth-child(2) :contains("02/06/2010")'); 

回答

1

試試這個,它可能會更快:

$('table tr td:nth-child(2)').filter(function() { 
    return $(this).text().indexOf('02/06/2010') != -1; 
}).closest('tr').css("border", "1px red solid"); 

而且,因爲你似乎有一個非常大的數據集,有一個在給人一種清純的DOM解決了一槍,如無傷害:

var table = document.getElementsByTagName("table")[0]; 
var rows = table.getElementsByTagName("tr"); 
for(var i = 0; i < rows.length; i++) { 
    var cell = rows[i].getElementsByTagName('td')[2]; 
    var cellText = cell.childNodes[0]; 
    if(cellText.data == '02/06/2010') { 
     // do something with cell 
    } 
} 

嘗試在這裏:http://jsfiddle.net/ANsUq/

+0

感謝您的答覆。是否可以在第一個解決方案中仍然使用contains方法。該列也可能包含時間,因此並不總是精確匹配。 – 2010-06-02 14:28:47

+0

@sirjamescallaghan - 我編輯了第一個解決方案。 – karim79 2010-06-02 14:32:12

+0

完美工作,現在也快得多!非常感謝。 PS:有沒有更簡單的方式來訪問​​內容。我現在實現這個的方式是使用$(this).next('td')。text() – 2010-06-02 15:30:36

相關問題