javascript - 按属性分组 div
问题描述
基于此,我尝试按其 div 属性“messsage-id”对 div 进行分组。所以所有具有相同“message-id”的 div 都应该被一个类名 group 的 div 包裹。
<div class="message" message-id="1">a</div>
<div class="message" message-id="1">a</div>
<div class="message" message-id="2">a</div>
<div class="message" message-id="2">a</div>
<div class="message" message-id="3">a</div>
但我不让它与属性而不是类名一起工作。这是我尝试过的:
var groups = {};
$('.day').each(function () {
var className = this.getAttribute("message-id").match(/(day\d+)/)[1],
$group = groups[className];
if (!$group) {
$group = $('<div />', {
'class': 'group'
}).insertAfter(this);
groups[className] = $group;
}
$group.append(this);
})
这是小提琴
解决方案
您使用该函数走在正确的道路上,getAttribute
但不需要match
在代码中使用该函数,因为getAttribute
已经为您的组返回了 id。此外,您$('.day')
的循环没有针对正确的类,它应该$('.message')
在您的示例中定位。
var groups = {};
$('.message').each(function () {
var className = this.getAttribute("message-id"),
$group = groups[className];
if (!$group) {
$group = $('<div />', {
'class': 'group'
}).insertAfter(this);
groups[className] = $group;
}
$group.append(this);
})
.group {
border: 1px solid red;
margin-bottom: 5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="message day" message-id="1">a</div>
<div class="message day" message-id="1">a</div>
<div class="message day" message-id="2">a</div>
<div class="message day" message-id="2">a</div>
<div class="message day" message-id="3">a</div>
推荐阅读
- java - 如何从 CSV 文件聚合数据以存储到 Java 中的对象链表中
- react-native - 从 React Native 访问 iOS 配置文件?
- java - Spring Data JPA orphanRemoval 不起作用
- javascript - iphone图像在webapp和safari中加载缓慢
- node.js - 单击以下链接时显示超出查询限制警告
- r - R(和 dplyr?) - 按组从数据帧中采样,最大样本大小为 n
- php - 如何防止 Laravel 中的多个数据库查找并在单个请求中共享状态?
- visual-studio - Visual Studio 2017 探查器结果
- ios - Alamofire:具有额外属性的可编码对象
- python - 根据其他列表中的单词对列表进行排序