[英]Select element if contains text
我无法使这一功能正常运行,也找不到任何可以满足我想要的类似问题。
我有一个表,像这样的行:
<div class="gui-table">
<table>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td><p class="customfields">Size</p></td>
<td></td>
</tr>
//etc...
我想检查所有第二个单元格中是否都包含文本 “ size”! 如果是这样,则隐藏第三个td
。
所以我认为可行的是:
$('.gui-table tr').each(function(){
if ($('td:nth-child(2) .customfields:contains("Size")').length > 0) {
$(this).css('visibillity', 'hidden');
}
});
这行不通! 有人看到这有什么问题吗?
做就是了:
$('.gui-table .customfields:contains("Size")').css('visibility', 'hidden');
小提琴: http : //jsfiddle.net/cfmrngcc/2/
假设我正确理解了您的问题,请执行以下操作:
$('.gui-table p.customfields:contains("Size")').parent().next().hide();
td { border: 1px solid black; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="gui-table"> <table> <tr> <td></td> <td></td> <td>Shown</td> </tr> <tr> <td></td> <td><p class="customfields">Size</p></td> <td>Hidden</td> </tr> </table> </div>
这将隐藏任何包含带有文本大小的ap标记的表单元格之后的下一个表单元格。
它通过在gui表中找到包含大小的P标签来工作- $('.gui-table p.customfields:contains("Size")')
然后使用.parent()选择它的父表单元格。
我对此进行了探讨 ,并提出了这个JSFiddle ,它应该可以使您再次前进。 基本功能非常像您刚开始使用时一样,但修改如下:
function doItNow(e)
{
$('.gui-table tr').each(function ()
{
$('td:nth-child(2) .customfields:contains("Size")').each(function ()
{
$(this).parents('tr').children('td:nth-child(3)').css('visibility', 'hidden');
});
});
}
注意内部的each()正在传递段落元素而不是单元元素。 因此,我遍历了parent()链,直到找到该行并隐藏了第三个孩子。 您可能可以在没有内部代码的情况下进行编码,但是我太懒了以至于没有那么复杂!
如果您只想隐藏第三列,那么当第二列中有“大小”一词时,您可以采用以下方式:
$('.gui-table td:nth-child(2):contains("Size")').next().css('visibility', 'hidden');
这是一个jsfiddle: http : //jsfiddle.net/0qczvak5/
说明:
选择所有具有类名称.gui-table
元素,使用td:nth-child(2)
选择所有第二个td
,使用:contains("Size")
过滤它们。 现在,所有第二个td
带有单词“ Size”和.next()
您将得到以下单元格(第三个),然后使用.css('visibility', 'hidden')
。
$(".gui-table tr td:nth-child(2)").each(
function (index,tag){
if ($(tag).find("p").text() == "Size")
$(tag).css('visibility', 'hidden');
}
)
这是可行的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.