如果字符串嵌套在 TOP 级别元素中,则向顶级元素添加类



我在divs里面有div。大约 3 或 4 级深,我有一个包含 P 标签的div,其中包含一个 span 标签。我需要使用已经存在的类向更高的div 添加一个额外的类,并且基于我的嵌套跨度是否包含一个特定的字符串。

这是我的html代码:pastebin.com 链接

我需要检查我的嵌套 span 元素以查看它是否包含字符串"十月",如果是这样,则在已经具有"事件数据"类的顶部div 中添加一个额外的"十月"类。

我希望我没有忘记任何事情

var span=$("p>span");
for(var i=0;i<span.length;i++) {
    if(span[i].text().indexOf("october") >= 0)) {
        span[i].parents("div.event-data").addClass("October");
    }
}

如果包含字符串的 span 是 el ,那么您可以像这样设置父类:

$(el).parents(".event_data").last().addClass("October")

这里的关键是.parents(sel)将返回与给定选择器匹配的所有父项,并且它们按父链上最接近到最远的顺序返回。 然后,.last()选取最后一个(父链上最远的),然后addClass()所需的类添加到剩余的父对象。

如果还需要帮助查找文本的跨度和测试,则需要提供有关如何确定要测试文本的跨度的更多指导。


您对在哪里查找文本的描述仍然有点模糊且不具体,但这里有一种方法可以完成整个事情:

$('p[id^="event_date-"]:contains(October)')
    .parents(".event_data").last().addClass("October");​

而且,您可以看到它在您的HTML上工作:http://jsfiddle.net/jfriend00/Pp8gw/

解释:

  • 查找 id 以 "event_date-" 开头的p标签
  • 在该p标记中,它会查找文本"October"
  • 查找具有"event_data"类的所有祖先
  • 获得最远的祖先
  • 将类"October"添加到该祖先

最新更新