禁用其中<td>之一包含任何值的<tr>

时间:2019-08-14 10:41:51

标签: javascript jquery

我有一张桌子,里面有多个trs和tds。每个td都为一个特定字段包含一个不同的元素名称,无论是否存在文本,我都需要计算出来。如果在该字段中有文本,那么我希望禁用整个tr或理想情况下将其隐藏(因为有一个单选按钮,如果此td包含任何文本,我不希望用户单击)

下面的表格结构很抱歉,它是一个屏幕截图

https://imgur.com/JpdsMff

我尝试了一些尝试来查找诸如具有文本的名称之类的元素,然后,如果具有文本,则隐藏其父对象,即整行,如果不做任何事情……这根本不做任何事情!

$(document).ready(function() {
    $('[name^="ctl00_MainPlaceHolder_rpVacantTime_ct"]').each(function() {
        if ($(this).text()) {
            $(this).parent().hide();
        } else {
            alert($(this).text());
        }
    });
});

因此,理想情况下,我希望上面的内容能够找到所有具有相同名称的元素,然后隐藏其父行。

1 个答案:

答案 0 :(得分:0)

只需查找标签,然后在满足条件的情况下将树向上遍历tr

您可以使用jquery“结尾为”选择器$=来选择没有所有难看的asp.net id的标签。

$("span[id$='lblReservationReason']").each(function(){
    if ($(this).text().length > 0){
        $(this).closest('tr').hide();
    }
});

修改

要在排行时禁用广播,可以使用find

回到树下
$("span[id$='lblReservationReason']").each(function(){
    if ($(this).text().length > 0){
        let radio = $(this).closest('tr')
                    .find('input[type="radio"][name="rbVacantTime"]');

        $(radio).prop('disabled', true);
    }
});