0

我有两个包含文本 SUM 的描述,但一个是粗体(SUM和一个不是(SUM))。我想获得 td:eq(5) 的描述,其中包含不带 b-tag 的 SUM。

HTML 是动态生成的,所以我不能放置任何 ID、类等。

这是我的代码(它在两个总和字段上都给了我绿色背景):

$('#someTable tr').each(function () {
    var tr = $('#someId').closest('tr');
    var tdSum = $(tr).find('td:contains("SUM")');

    $(tdSum).closest('tr').find('td:eq(5)').css('background-color', 'green');
});

我希望你明白我想要做什么。

4

3 回答 3

0

首先,tr已经作为当前循环项目可用。要选择td包含文本SUM但不包含b标签的内容,请按照指示使用下面的选择器。然后应用格式:

$('#someTable tr').each(function () {            
    var tr = $(this);
    var tdSum = $(tr).find('td:contains("SUM"):not(:has(b))').css('background-color', 'green');         
});
于 2012-11-19T16:09:30.117 回答
0

如果你这样做each(),应该推荐使用$(this).

$('#someTable tr').each(function () {            
        if($(this).find('td:contains("SUM")').length > 0){            
            $(this).find('td:eq(5)').css('background-color', 'green');
        }
});
于 2012-11-19T16:09:57.957 回答
0

尝试使用 .not() 并且必须用 ab 标签过滤掉 td

.not(':has("b")')

或 filter 函数来过滤掉元素

$(tr).find('td:contains("SUM")').filter(function(){
     return $('b',this).length == 0;
});
于 2012-11-19T16:17:51.183 回答