所以我试图遍历一个表并在td中找到特定的文本并将其分配给变量。这就是我到目前为止所做的:
var table = $(this).closest('table');
$("td",table).each(function(){
if($(this)+':contains("AD Login")') console.log($(this).next().text());
});
但是,此代码会将所有单元格打印到控制台,而不是找到找到的单元格的兄弟
答案 0 :(得分: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.”) 。转换为布尔类型时,字符串immediates始终为true。
答案 1 :(得分: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());
});
答案 2 :(得分:1)
假设jQuery的“旧”版本(从评论到另一个答案):
$("td",table).each(function(i,el){
if ((el.textContent || el.innerText) == 'AD Login') {
console.log($(this).next().text());
}
});
以上将测试td
的文本是否完全等于字符串('AD Login'),以检查该文本是否仅存在于td
的文本中:< / p>
$("td",table).each(function(i,el){
if ((el.textContent || el.innerText).indexOf('AD Login') > -1) {
console.log($(this).next().text());
}
});