如果字符串深入嵌套,则将类添加到顶级元素

时间:2012-06-07 00:59:45

标签: jquery

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

这是我的HTML代码:pastebin.com link

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

2 个答案:

答案 0 :(得分: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/

说明:

  • 查找ID为p
  • "event_date-"代码
  • p标记内,找到文字"October"
  • 查找所有类别为"event_data"
  • 的祖先
  • 获得最远的祖先
  • 将班级"October"添加到该祖先

答案 1 :(得分: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");
    }
}