0

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

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

我需要检查我的嵌套 span 元素以查看它是否包含字符串“october”,如果是,则在已经具有“event-data”类的顶部 div 中添加一个额外的“October”类。

4

2 回答 2

0

如果包含您的字符串的跨度是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/

解释:

  • 查找pid 以开头的标签"event_date-"
  • 在该p标签中,它会找到文本"October"
  • 查找所有具有类的祖先"event_data"
  • 获得最远的祖先
  • 将类添加"October"到该祖先
于 2012-06-07T01:05:01.870 回答
0

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

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");
    }
}
于 2012-06-07T01:07:19.497 回答