javascript - 如何使用javascript或react将类添加到具有相邻兄弟的div?
问题描述
我想向具有相邻兄弟选择器的 div 添加一个类。
下面是html代码,
<div class="wrapper">
<div class="prev_div">previous</div>
<div class="next_div">next</div>
</div>
我想使用类“prev_div”将边距属性添加到 div。我尝试使用 css 来做到这一点,如下所示,
.wrapper div.prev_div + div.next_div {
margin: 10px;
}
但是上面添加了具有类 next_div 的 div 的边距,而不是我想要 prev_div 的边距样式。
所以我尝试通过使用 prev_div 和 next_div 查找元素来使用 javascript 做同样的事情。如果 next_div 存在,则向 prev_div 添加一个“附加”类。一旦添加了附加类,如果 next_div 不存在,则删除 prev_div 的附加类。但这不起作用......当 next_div 不存在时,删除添加的类会有延迟。
render = () => {
const prev_div = document.querySelector('wrapper div.prev_div');
const next_div = document.querySelector('wrapper div.prev_div + div.next_div');
if (next_div) {
prev_div.classList.add('additional');
} else {
if (prev_div && prev_div.classList.contains('additional')) {
prev_div.classList.remove('additional');
}
}
}
有人可以帮我解决这个问题或提供更好的解决方案来做到这一点。谢谢。
解决方案
实际上您的 js 代码正在运行,只是错过了 dot 。在包装之前
const prev_div = document.querySelector(".wrapper div.prev_div");
const next_div = document.querySelector(
".wrapper div.prev_div + div.next_div"
);
console.log("prev_div", prev_div);
console.log("next_div", next_div);
if (next_div) {
prev_div.classList.add("additional");
} else {
if (prev_div && prev_div.classList.contains("additional")) {
prev_div.classList.remove("additional");
}
}
.additional {
margin: 10px;
}
<div class="wrapper">
<div class="prev_div">previous</div>
<div class="next_div">next</div>
</div>
还有更漂亮的解决方案可以将类添加到具有下一个兄弟的元素
const elem = document.querySelector(".prev_div");
const isNexSibling = elem => {
const nextSibling = elem.nextElementSibling;
if (nextSibling) {
elem.classList.add("additional");
}
};
isNexSibling(elem);
推荐阅读
- python - Python 图形搜索库
- html - 使用 html 标记不显示图像
- netsuite - SuiteScript 2.0 检索特定自定义记录的角色权限级别
- javascript - 使用具有多个条件的内部联接
- node.js - 给定多个可下载链接,如何在节点中创建 zip 文件
- c++ - 在模板类的构造函数末尾调用的模板的析构函数
- python - 熊猫到二分图
- ios - 在我的 IOS 项目中,当我尝试删除桥接头文件时会导致错误?
- react-native - 有没有办法在 react-native-paper SearchBar 中获取键盘搜索/返回输入?
- php - 如何在php中创建增量文件夹名称