jquery - 如果一个元素的子元素有一个特定的类,则添加一个类来兄弟元素

标签 jquery html css

如果下一个同级元素包含具有特定类的子元素(在本例中为孙元素),我想使用 jQuery 从一个元素中删除样式。

更具体地说,如果下一个容器具有特定的元素类,我想删除容器上的边框。该特定元素是一个顶部有一行的框,因此不需要上一行。

例子:

看笔target next sibling通过 nic ( @nicwinn ) 在 CodePen .

enter image description here

<div class="example">Unwanted Line
  <div class="row">
    <div class="columns foo foobar"><!--foobar added by jquery-->
      <h1>Heading</h1>
    </div>
  </div>
  <div class="row"><!--bar exists in next sibling of ".row .columns.foo"-->
    <div class="columns">
      <div class="bar">
        Boxy Content. The line above me isn't helping.
      </div>
    </div>
  </div>
  <div class="row">
    <div class="columns">
      <p>
        Open Content. I look fine with a box above me.
      </p>
    </div>
  </div>
</div>
<div class="example">Wanted line
  <div class="row">
    <div class="columns foo"><!--no foobar added by jquery-->
      <h1>Heading</h1>
    </div>
  </div>
  <div class="row">
    <div class="columns">
      <p>
        Open Content. I look fine with a line above me.
      </p>
    </div>
  </div>
  <div class="row">
    <div class="columns">
      <div class="bar"><!--bar  added by jquery-->
        Boxy Content
      </div>
    </div>
  </div>
</div>

这就是我目前所拥有的。

if ( $('.bar').length ) {
    $( ".foo" ).addClass( "foobar" );
}

但这一直有效。

最佳答案

我不完全确定你在寻找什么,但这是你在寻找的吗:

将您的 .foo CSS 规则更改为

.row + .row .foo {
  border-bottom: 1px solid;
  margin-bottom: 0;
}

body {
  text-align:center;
  margin:1rem;
}
.columns {
  margin-bottom:1rem;
}

.row + .row .foo {
  border-bottom: 1px solid;
  margin-bottom: 0;
}

.bar {
  background:brown;
  padding:1rem;
  color:white;
  font-size:1.5rem;
}

p {
  padding:1rem;
  font-size:1.5rem
}
<lable>Example</lable>
<div class="row">
  <div class="columns foo foobar">
    <h1>Heading</h1>
  </div>
</div>
<div class="row">
  <div class="columns">
    <div class="bar">
      Stuff That Matters
    </div>
  </div>
</div>
<div class="row">
  <div class="columns">
    <p>
      Other Stuff That Doesn't Matter
    </p>
  </div>
</div>

<div class="row">
  <div class="columns foo foobar">
    <h1>Heading</h1>
  </div>
</div>
<div class="row">
  <div class="columns">
    <p>
      Other Stuff That Doesn't Matter
    </p>
  </div>
</div>
<div class="row">
  <div class="columns">
    <div class="bar">
      Stuff That Matters
    </div>
  </div>
</div>

关于jquery - 如果一个元素的子元素有一个特定的类,则添加一个类来兄弟元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51756393/

相关文章:

javascript - 动态对象 html - 在 Canvas 上通过函数绘制的对象之间进行交替,并使用范围/ slider 来更改模式

javascript - JQueries Live 在 IE8 中工作吗?

jquery - 带有 jQ​​uery Slider Revolution(WP 插件版本)的 Webkit 中的字体渲染/平滑问题

php - 如何在 codeigniter 中包含 font-awesome

javascript - 在 Bootstrap 模态窗口中选择在 Firefox 中不起作用

javascript - 使用JavaScript播放通知声音

php - 在提交时从外部表单标签向表单添加元素

css - 将文本对齐到 div

html - 如何在该代码中垂直对齐 li 中的元素?

javascript - 即使设置了 PreventDefault,鼠标事件仍然会在触摸事件上触发