jQuery:如果标记存在于self之上,则为标记添加样式

时间:2015-05-08 16:10:35

标签: javascript jquery

我想要.addClass("someClass"<blockquote>,如果它上面有<figure>hello,就像这样:

<figure class="hello"> world </figure>
<blockquote> Lorem </blockquote>

因此,只有当<figure>标记位于其正上方时,才会将某些标记与div分开。

这样的事情可能吗?

3 个答案:

答案 0 :(得分:5)

假设这是<blockquote>元素的样式,当它紧跟<figure>之后,那么你可以简单地使用CSS:

figure + blockquote {
    border-color: red; /* or whatever */
}

section {
  border: 1px solid #000;
  margin: 0 0 1em 0;
}

blockquote {
  border: 1px solid #000;
}

figure + blockquote {
  border-color: #f00;
}
<section>
  <figure>This is a figure</figure>
  <blockquote>And this is an immediately-following blockquote.</blockquote>
</section>

<section>
  <blockquote>This is a blockquote.</blockquote>
  <figure>And this is a figure following a blockquote</figure>
</section>

<section>
  <figure>Another figure</figure>
  <div>a div</div>
  <blockquote>And this is a blockquote.</blockquote>
</section>

参考文献:

答案 1 :(得分:4)

$('figure.hello + blockquote').addClass('someClass');

来自jQuery的文档:

Next Adjacent Selector (“prev + next”)

  

选择立即匹配“next”的所有下一个元素   之前是兄弟姐妹“prev”。

答案 2 :(得分:3)

可以从已知类中工作......最简单

function union(left,right){
    var list = [], screen = {};
    for(var i = 0; i < left.length; i++){
        if(!screen[left[i]])list.push(i);
        screen[left[i]] = 1;
    }
    for(var i = 0; i < right.length; i++){
        if(!screen[right[i]])list.push(i);
        screen[right[i]] = 1;
    }
    return Immutable.List(list);
}

它的工作方式是,如果找不到任何一个选择器,那么什么都不会发生,并且仅适用于以下兄弟是一个阻碍的图形