2012-08-24 34 views
1

我想選擇每個包含特定文本的單元格作爲內容。我那樣做:選擇具有特定內容的元素作爲直接子節點

$("td:contains('Some Text')") 

但在隨後的標記了該表達式查找兩個td S:

<table> 
    <tr> 
    <td> 
     <table> 
     <tr> 
      <td>Some Text</td> 
     </tr> 
     </table> 
    </td> 
    </tr> 
</table> 

我只想實際包含文本,而不是包含在細胞中的細胞包含其中一個單元格中的文本的表格。

如何修改我的選擇器到那裏?

+0

嘗試':last' http://stackoverflow.com/questions/1765137/jquery-contains – fankt

+0

@ evanc3:這將只返回一個元素。但是可能會有多個「Some Text」文本的元素。 – Amberlamps

回答

3

試試這個:

$("td:not(:has(*)):contains('Some Text')") 

Fiddle

+0

從他的例子中不清楚,但如果td是'​​某些文本更多文本' – Esailija

+0

你的原始答案出了什麼問題?這非常出色。 – Amberlamps

+0

@Esailija:所需表格單元格內沒有更多標記。 – Amberlamps

0

如果你想僅僅通過改變選擇做到這一點,你總是可以做$("table table td:contains('Some Text')")

演示:http://jsfiddle.net/bFUEJ/

更好替代方法是給內部表一個ID。

<table> 
    <tr> 
    <td> 
     <table id="innerTable"> 
     <tr> 
      <td>Some Text</td> 
     </tr> 
     </table> 
    </td> 
    </tr> 
</table> 


//JS 
$('#innerTable').find("td:contains('Some Text')"); 
+0

謝謝,但這是靜態的方式。我不知道'td'是否總是包裹在兩個'table'中。我的標記僅用於演示目的。 – Amberlamps

+0

然後,您應該看到我的更新回覆:添加ID。另外,這些細節應該發佈在問題中,以便我們能夠爲您提供幫助。 – Dutchie432

1
$("td").filter(function() { 
    return $(this.childNodes).filter(function() { 
     return this.nodeType === 3 && this.nodeValue.indexOf("Some Text") > -1; 
    }).length; 
}); 

http://jsfiddle.net/bFUEJ/1/

相關問題