javascript - 当第一个初始元素没有与此 jquery 等效的某个类 CSS 时,选择下一个元素

标签 javascript html css css-selectors

我有以下 jQuery。它遍历父元素,然后选择第一个没有 active 类的 div。从那里,选择下一个元素:

jQuery

$('.parent').each(function () {
    $('div', this).eq(0).not('.active').next().addClass('selected');
});

CSS

.parent * {
    padding-left: 1em;
    display: block;
}
.main {
    border-left: 2px solid;
}
.selected {
    color: #f00;
}

HTML

<div class="parent">
    <span class="main">First Span</span>
    <span>Second Span</span>
    <div class="main">First div</div>
    <div>Second div***</div>
    <div class="main">Third div</div>
    <span>Third span</span>
</div>
<div class="parent">
    <span class="main">First Span</span>
    <span>Second Span</span>
    <div class="main active">First div</div>
    <div>Second div - dont select</div>
    <div class="main">Third div</div>
    <span>Third span</span>
</div>
<div class="parent">
    <span class="main">First Span</span>
    <span>Second Span</span>
    <div class="main">First div</div>
    <div>Second div***</div>
    <div class="main">Third div</div>
    <span>Third span</span>
</div>

如果没有 jQuery,我怎么能做到这一点。我感觉有一些 css4 选择器可以提供帮助。如果没有,常规的 javascript 答案会很棒,因为我正试图摆脱这个 jquery。

最佳答案

您可以使用 :first-of-type 的组合/:not()用于选择 div 的伪类。然后使用 adjacent sibling combinator, +选择下一个元素:

Example Here

.parent div:first-of-type:not(.active) + * {
    color: #f00;
}

既然你说你想要一个与你发布的 jQuery 等效的 JS:

Example Here

var elements = document.querySelectorAll('.parent div:first-of-type:not(.active) + *');
Array.prototype.forEach.call(elements, function (el) {
    el.classList.add('selected');
});

关于javascript - 当第一个初始元素没有与此 jquery 等效的某个类 CSS 时,选择下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575615/

相关文章:

css - 为邮件标题注册样式表

javascript - 当用户将页面滚动到底部时页脚向上滑动

javascript - 如何从 json 字段数组动态创建没有 jquery 的表单?

javascript - jQuery:Fancybox 只能显示内联窗口一次,第二次尝试失败并出现错误: "Uncaught TypeError: Cannot call method ' 宽度'未定义”

javascript - JS 函数不更新 HTML 字符串

javascript - jquery 不会将类添加到 html 标记

javascript - 如何在我的 html 代码中提供我在网上发现的 html 代码的引用文献?

html - 单击 slider 时更改 slider 点的颜色

javascript - 如何将鼠标悬停事件更改为点击事件?

c# - 如何从 Controller 触发弹出确认