2013-05-09 126 views
1

我已經解決了我原來的問題(痛苦),但想知道如果有一個更好的解決方案的具體文本子元素的父元素(jQuery的必須有一個更好的方式來做到這一點)。我與嵌套表(的SharePoint)的工作,並試圖選擇其中一個子細胞中含有特定文本行。我已經做了一個簡化的例子下面(也是在jsFiddle在這裏:http://jsfiddle.net/tpZyn/6/如何選擇包含使用jQuery

在這個例子中,我試圖添加類「紅色行」的單元格行包含文本「(紅色)」(請記住,我的最終目標是,選擇所需的行...把他們的紅色只是表明我選擇他們)的方式,但所有的選擇我已經試過落得選擇不是更所需的行。最後我只能說做了什麼,我需要做的過濾功能,但似乎有點尷尬。似乎應該有更好的方法。

<style> 
.red-row { 
    background-color: #FF0000; 
} 
</style> 
<script> 
$(document).ready(function() { 
    //$('td:contains("(red)")').parent("tr:first").addClass('red-row'); 
    //$('td>:contains("(red)")').parent().addClass('red-row'); 
    $('td').filter(function(){var bob = $(this).text().indexOf("(red)"); return (bob > -1 && bob < 10);}).parent().addClass('red-row'); 
}); 
</script> 

    <table> 
      <tbody> 
       <tr> 
        <td colspan="2"> 
         <h1>My Header</h1> 
        </td> 
       </tr> 
       <tr> 
        <table> 
         <tbody> 
          <tr> 
           <td> 
            <h2>Left Column</h2> 

           </td> 
           <td> 
            <h2>Right Column</h2> 

           </td> 
          </tr> 
          <tr> 
           <td> 
            <table> 
             <tbody> 
              <tr> 
               <td>(red) Apple</td> 
               <td>$3</td> 
              </tr> 
              <tr> 
               <td>(yellow) Banana</td> 
               <td>$2</td> 
              </tr> 
              <tr> 
               <td>(yellow) Lemon</td> 
               <td>$1</td> 
              </tr> 
              <tr> 
               <td>(red) Cherry</td> 
               <td>$2</td> 
              </tr> 
              <tr> 
               <td>(yellow) Quince</td> 
               <td>$3</td> 
              </tr> 
              <tr> 
               <td>(green) Apple</td> 
               <td>$4</td> 
              </tr> 
             </tbody> 
            </table> 
           </td> 
           <td> 
            <p>Some other content</p> 
           </td> 
          </tr> 
         </tbody> 
        </table> 
       </tr> 
      </tbody> 
     </table> 

回答

3

嘗試

$('td:contains("(red)")').not(':has(table)').closest("tr").addClass('red-row'); 

演示:Fiddle

+0

啊,謝謝你教我關於 「:有」 法。很好的解決方案。非常感謝你。 – JeffOnWire 2013-05-09 23:05:48