0

所以我试图遍历一个表并在 td 中找到特定的文本并将其分配给一个变量。这是我到目前为止所拥有的:

 var table = $(this).closest('table');

    $("td",table).each(function(){
        if($(this)+':contains("AD Login")') console.log($(this).next().text());
    });

但是,此代码将所有单元格打印到控制台,而不是找到的单元格的兄弟

4

3 回答 3

3

将该.is()函数与:contains选择器一起使用(添加的 jQuery 版本:1.1.4)。

$("td",table).each(function(){
    if($(this).is(":contains('AD Login')")) console.log($(this).next().text());
});
  • 注意.contains()这里不适合,因为它只能检查一个 DOM 元素是否是另一个 DOM 元素的后代。(来自 API)。

关于您在评论中写的内容 - 它始终返回 true,因为您只是将$(this)字符串值连接到另一个字符串(“:contains etc.”)。当转换为布尔类型时,字符串立即数始终为真。

于 2013-08-29T20:58:34.720 回答
1

jQuery 有一个包含选择器http://api.jquery.com/contains-selector

例子 :

var table = $(this).closest('table');

table.find('td:contains("AD Login")').each(function(){
    console.log($(this).next().text());
});
于 2013-08-29T21:02:33.963 回答
1

假设 jQuery 的“旧”版本(从评论到另一个答案):

$("td",table).each(function(i,el){
    if ((el.textContent || el.innerText) == 'AD Login') {
        console.log($(this).next().text());
    }
});

上面将测试 的文本td是否完全等于字符串('AD Login'),以检查该文本是否仅存在于 的文本中td

$("td",table).each(function(i,el){
    if ((el.textContent || el.innerText).indexOf('AD Login') > -1) {
        console.log($(this).next().text());
    }
});
于 2013-08-29T21:03:26.030 回答