2013-05-09 87 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