我很难搞清楚这一点。我正在尝试搜索我的项目列表并找到一个数字(当天)。然后将css
类添加到该列表项。
这是有效的,但有一点小故障:我希望能够排除<p></p>
标记内存在的所有文本。 (不太确定如何做到这一点)。经过一些阅读,我认为我应该使用.not
功能,但我想我可能会做错了。
这是我目前使用的jQuery:
$("li:contains('" + thisDay + "')").not("p").addClass("current");
为方便起见,我创建了此FIDDLE,向您显示我的问题。
您会注意到其中包含数字“19”的每个列表项都会突出显示。
您能否告诉我如何仅修改包含li
的{{1}},并且不会搜索19
的{{1}}代码?
答案 0 :(得分:2)
您有两种选择。您可以将该日期换成span
并将其作为目标,或者您可以过滤掉文本节点并进行检查:
$('.cal').filter(function () {
return $(this).contents()[0].textContent == thisDay;
}).addClass('current');
filter()
允许您指定要运行的函数,以便您可以更好地控制过滤(:contains()
仅进行通配符搜索)contents()
返回所有子节点,包括文本节点,这就是您的“日期”数字。[0]
返回第一个孩子,在这种情况下是天数。您可能需要在此处进行一些错误检查/处理,以使解决方案更加健壮。true
,则该项目将包含在结果中。返回false
,但不会。因此,当文本内容等于您要查找的日期时,我们希望返回true。 答案 1 :(得分:0)
color
属性继承到子元素,您可以通过简单地将以下内容添加到您的css来防止这种情况:
li p{
color:initial;
}
(您可以使用更具体的选择器。)
向downvoters:
这是有效的,但有一点小问题:我希望能够排除
<p></p>
代码中存在的所有文字您能告诉我如何仅修改包含19的li并且不会在
<p></p>
标签中搜索19吗?
OP不希望<p>
标记受.current
c;中的css影响。我的解决方案就是这样。欢迎提出意见