Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 搜索一个元素';s内容,不包括任何子元素的内容_Javascript_Jquery - Fatal编程技术网

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;
}