Javascript 搜索一个元素';s内容,不包括任何子元素的内容
我很难弄明白这一点。我正在尝试搜索我的项目列表并找到一个编号(当前日期)。然后将Javascript 搜索一个元素';s内容,不包括任何子元素的内容,javascript,jquery,Javascript,Jquery,我很难弄明白这一点。我正在尝试搜索我的项目列表并找到一个编号(当前日期)。然后将css类添加到该列表项 这是可行的,但有一个小问题:我希望能够排除标记中存在的所有文本。(不太清楚怎么做)。经过一些阅读,我认为我应该使用。而不是功能,但我认为我可能做得不正确 以下是我当前使用的jQuery: $("li:contains('" + thisDay + "')").not("p").addClass("current"); 为了您的方便,我创建了这个向您显示我的问题 您会注意到,每个带有数字“19
css
类添加到该列表项
这是可行的,但有一个小问题:我希望能够排除
标记中存在的所有文本。(不太清楚怎么做)。经过一些阅读,我认为我应该使用。而不是功能,但我认为我可能做得不正确
以下是我当前使用的jQuery:
$("li:contains('" + thisDay + "')").not("p").addClass("current");
为了您的方便,我创建了这个向您显示我的问题
您会注意到,每个带有数字“19”的列表项都会高亮显示
您能告诉我如何只修改包含19
的li
,而不在标签中搜索19
吗?您有两个选择。您可以将一天用span
进行包装,并将其作为目标,也可以过滤掉文本节点并检查它们:
filter()
允许您指定要运行的函数,以便对筛选有更多的控制(:contains()
仅执行通配符搜索)
contents()
[0]
返回第一个子项,在本例中,该子项是天数。您可能需要在此处进行一些错误检查/处理,以使解决方案更加健壮
- 如果从过滤器回调返回
true
,则该项将包含在结果中。返回false
,它不会返回。因此,当文本内容等于您要查找的日期时,我们希望返回true李>
color
属性继承到子元素,只需将以下内容添加到css中即可防止此情况发生:
li p{
color:initial;
}
(您可以使用更具体的选择器。)
对下层选民:
这是可行的,但有一个小问题:我希望能够排除
标记中存在的所有文本
您能告诉我如何只修改包含19的li,而不在标记中搜索19吗
OP不希望
标记受到.current
c中css的影响;混蛋,我的解决方案就是这样。欢迎评论
你只想更改日期文本的颜色,而不是内容,对吗?@Yogeshharma我想他想更改整个内容的颜色,但只更改标题号为19的元素的颜色。他的问题是,如果内容中的任何地方有19个,代码当前会改变颜色,而不是仅当标题中有19个时才改变颜色。在小提琴中,它仍然高亮显示(例如)数字17(!=19)绿色。OP不想要的东西。@ZiNNED它也发生在原始小提琴中,它与需求无关,据我所知,OP不希望
标记受到当前更改颜色的类的影响。你是对的,OP没有具体说明,这是值得讨论的。我将撤消我的否决票。我将撤消没有撤消最后否决票的人!:)对不起,我的问题不清楚。但我的意思是,我希望Jquery只搜索列表项,并从搜索中排除标记。CSS可以应用于列表项中的所有文本。但只有以19为日期的那个。谢谢你的回答!令人惊叹的。。。这正是我想要的,非常感谢。不是100%确定它是干什么的,但我会仔细阅读的。:)@迈克:我加了一些注释,希望能有所帮助。这太棒了!再次感谢杰森!!现在对我来说有意义了D
li p{
color:initial;
}