javascript - 查找连续元素并将所有周围的 div 分组
问题描述
你好,
假设我有 4 个盒子,它们之间有 3 个运算符 (AND|OR)。每次在 AND|OR 之间切换时,如果两个运算符具有相同的连续值,我需要根据规则将框和运算符组合在一起。
一些需要组的随机场景:
[B1 AND B2 AND B3] OR B4(图片示例)
B1 OR [B2 AND B3 AND B4]
B1 AND [B2 OR B3 OR B4]
如果我有 5 个带有不同且连续的运算符的盒子,它应该优先考虑并仅包装第一组运算符。例如:[B1 OR B2 OR B3] AND B4 AND B5。
到目前为止,这是我的代码,但无法正常工作,尤其是在查找连续运算符时。例如:[B1 OR B2 OR B3] AND B4 AND B5
HTML:
<div class="container-section">
<div class="box">box1</div>
<div class="and-or" data-operator="0">AND</div>
</div>
<div class="container-section">
<div class="box">box2</div>
<div class="and-or" data-operator="0">AND</div>
</div>
<div class="container-section">
<div class="box">box3</div>
<div class="and-or" data-operator="1">OR</div>
</div>
<div class="container-section">
<div class="box">box4</div>
</div>
JS:
function groupBoxes() {
//find all operators,
let operators = $('.and-or');
//reset all groups
$('.container-section').removeClass('hasGroup');
$('.group-blue-line > .container-section').unwrap();
//trying to find consecutive operators
//foreach operator I am trying to look up and down to siblings value
operators.each(function(index, element) {
let currentOperator = $(element);
let prevOperator = $(operators[index - 1]);
let nextOperator = $(operators[index + 1]);
let prevBox = $(element).closest('.container-section').prev();
let nextBox = $(element).closest('.container-section').next();
if (prevOperator && currentOperator.data('operator') == prevOperator.data('operator')) {
prevBox.addClass('hasGroup');
}
if (nextOperator && currentOperator.data('operator') == nextOperator.data('operator')) {
nextBox.addClass('hasGroup');
}
});
$('.hasGroup').wrapAll('<div class="group-blue-line"></div>');
}
解决方案
推荐阅读
- android - DeviceAdminReceiver:未调用 onChoosePrivateKeyAlias
- android - FileUtils 在 androidx 中无法访问
- azure - 使用 power-shell 检索 azure Linux 机器的私有 IP
- swift - (斯威夫特)写这种优雅的方式?
- javascript - 为什么这个画布动画会留下痕迹?如何预防?
- php - 刷新旁边没有新页面
- python-3.x - 获取给定提交的下一个旧标签?
- android - 如何使用我需要使用 URL 编码的模型的改进字符串和数组列表发送 PUT 请求
- javascript - 通过对象以编程方式将 value prop 分配给输入
- web-crawler - 风暴爬虫中的桶号有什么用?