[英]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.