2017-09-15 81 views
-1

我有这样隐藏整个<tr>如果孩子的孩子

$('td:contains("label label-primary")').parent().hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<tbody> 
 
    <tr> 
 
    <td> 
 
     <a class="pums" rel="tooltip"> 
 
     <span class="label label-primary"> 
 
      HIDE 
 
     </span> 
 
     </a> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <a class="pums" rel="tooltip"> 
 
     <span class="label label-danger"> 
 
      SHOW 
 
     </span> 
 
     </a> 
 
    </td> 
 
    </tr> 
 
</tbody>

我只是想能够隐藏在深处的TR内span有一个特定的表行类。在这种情况下,label label-primary

但是,这似乎并不奏效。它什么都没有隐藏。

我在tampermonkey上使用此编辑其代码没有版本访问权的网页。

我在做什么错?

回答

1

:contains()选择包含指定文字的所有元素。您想使用find()https://api.jquery.com/find/)或:has()https://api.jquery.com/has-selector/以基于选择器进行选择。您还必须编写“.label.label-primary”来表明它们是类。

$('td:has(.label.label-primary)').parent().hide(); OR $('td').find('.label.label-primary').parent().hide();

+0

谢谢。我非常喜欢这一切,而你刚刚度过了一天。我忘记了课程命名。 :) –

0

试试这个:

$('span').hasClass('label label-primary').parents('tr:first').hide(); 
0

使用jQuery :has()伪类选择检查元素包含指定的选择相匹配的至少一个元素。或者使用has()方法过滤元素。

$('td:has(".label.label-primary")').parent().hide(); 
 

 
// or 
 
$('tr:has("td .label.label-primary")').hide(); 
 

 
// or using has method 
 
$('tr').has("td .label.label-primary").hide();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table> 
 
    <tbody> 
 
    <tr> 
 
     <td> 
 
     <a class="pums" rel="tooltip"> 
 
      <span class="label label-primary"> 
 
          ble>   HIDE 
 
           </span> 
 
     </a> 
 
     </td> 
 
    </tr> 
 
    <tr> 
 
     <td> 
 
     <a class="pums" rel="tooltip"> 
 
      <span class="label label-danger"> 
 
            SHOW 
 
           </span> 
 
     </a> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

0

试试这个..

$(".table td").filter(function() { 
    return $('span', this).hasClass('label.label-primary'); 
}).hide(); 
0

这里一个衬垫的解决方案,希望它有助于:

$("tr > td > a").find("span[class*='label label-primary']").closest("tr").hide()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body> 
 
<table> 
 
    <tr> 
 
    <td> 
 
     <a class="pums" rel="tooltip"> 
 
     <span class="label label-primary"> 
 
            HIDE 
 
           </span> 
 
     </a> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <a class="pums" rel="tooltip"> 
 
     <span class="label label-danger"> 
 
            SHOW 
 
           </span> 
 
     </a> 
 
    </td> 
 
    </tr> 
 
</table> 
 
</body>

0

我建议你这个jQuery脚本?

$('td').find(".label.label-primary").closest('tr').hide(); 
+0

'$('td .label.label-primary')。closest('tr')。hide();'就够了 –

0

在这里,你去了一个解决方案

$('table tr').each(function(){ 
 
    $(this).find('span[class="label label-primary"]').hide(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body> 
 
<table> 
 
    <tr> 
 
    <td> 
 
     <a class="pums" rel="tooltip"> 
 
     <span class="label label-primary"> 
 
      HIDE 
 
     </span> 
 
     </a> 
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <td> 
 
     <a class="pums" rel="tooltip"> 
 
     <span class="label label-danger"> 
 
      SHOW 
 
     </span> 
 
     </a> 
 
    </td> 
 
    </tr> 
 
</table> 
 
</body>

只是遍历所有tr &然后找到span与特定的类。

希望这会帮助你。