Javascript 根据元素的内容及其祖先的内容确定其目标

Javascript 根据元素的内容及其祖先的内容确定其目标,javascript,jquery,Javascript,Jquery,请看一看,让我知道如何将.today类添加到中,该类的值为天,父类的值为月 var month = "October"; var day = 16; 我已经尝试了.find()作为: $("thead tr").find("th").html(month).addClass('today'); 但这只是将月份添加到所有的thead tr中,如下所示: $("th:contains("+month+")").parents("table").find("td:contains("+day+")

请看一看,让我知道如何将
.today
类添加到
中,该类的值为
,父类的值为

var month = "October";
var day = 16;
我已经尝试了
.find()
作为:

$("thead tr").find("th").html(month).addClass('today');
但这只是将月份添加到所有的
thead tr

中,如下所示:

$("th:contains("+month+")").parents("table").find("td:contains("+day+")").addClass("today");
我们找到包含月份的
,获取它所属的表,然后搜索包含日期的


使用
:以这种方式包含

$("table:contains(" + month + ")")
   .find("td:contains(" + day + ")")
   .addClass('today');

var month=“十月”;
var日=16;
$(“表:包含(“+month+”)).find(“td:contains(“+day+”)).addClass(“今天”)
表格{
背景:灰色;
}
.今天{
背景:黄色;
}

二月
15
17
16
18

十月 15 17 16 18
前进 15 17 16 18
也许 15 17 16 18
在这种情况下,必须使用“:contains()”和“过滤器()”选择器

使用“filter()”可以显式检查字符串是否与搜索词完全相同,而不允许返回包含搜索词的所有字符串

$("table:contains(" + month + ")").find("td").filter(function () {
    return $(this).text() === day.toString()
}).addClass('today');
此函数将查找包含“month”值的表,然后查询该表中明确包含“day”值的“td”选择器,以便将类“今日”添加到该表中

示例:

参考资料:


参考:

一种可能的解决方案是使用此方法查找单元格的值,然后与日期进行比较,并为该单元格设置类别。在元素上添加ID可以让生活更轻松。对于一行解决方案,请查看我的答案谢谢香蕉,但Inoica在他评论中添加的最后一个注释是正确的,是的,他绝对是:)嗨,爱奥尼亚,谢谢你的评论,你的使用逻辑是100%正确的,但我不知道它在这里对我的演示不起作用:@suffi Good catch,
return
filter
回调中丢失。请参阅和更新的答案。感谢您的ping.:-)