所以我试图遍历一个表并在 td 中找到特定的文本并将其分配给一个变量。这是我到目前为止所拥有的:
var table = $(this).closest('table');
$("td",table).each(function(){
if($(this)+':contains("AD Login")') console.log($(this).next().text());
});
但是,此代码将所有单元格打印到控制台,而不是找到的单元格的兄弟
所以我试图遍历一个表并在 td 中找到特定的文本并将其分配给一个变量。这是我到目前为止所拥有的:
var table = $(this).closest('table');
$("td",table).each(function(){
if($(this)+':contains("AD Login")') console.log($(this).next().text());
});
但是,此代码将所有单元格打印到控制台,而不是找到的单元格的兄弟
将该.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.”)。当转换为布尔类型时,字符串立即数始终为真。
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());
});
假设 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());
}
});