jquery - jQuery 从同一个元素获取不同的值并将它们用作不同的类
问题描述
我正在努力寻找一种方法来获取子元素的文本并将它们用作父元素的单独类。我有点明白逻辑,但找不到分开每个班级的方法。
为了增加更多的复杂性,我想删除特殊字符,替换空格并将所有内容都小写。我想我已经得到了这部分(希望如此)。
无论如何......我有这个html代码:
<div class="parent">
<div class="child">Child #1</div>
<div class="child">Child #2</div>
<div class="child">Child #3</div>
<div class="child">Child #4</div>
</div>
<div class="parent">
<div class="child">Child #A</div>
<div class="child">Child #b</div>
<div class="child">Child #9</div>
<div class="child">Child #K</div>
</div>
我想看到的是以下内容:
<div class="parent new_child_1 new_child_2 new_child_3 new_child_4">
<div>Child #1</div>
<div>Child #2</div>
<div>Child #3</div>
<div>Child #4</div>
</div>
<div class="parent new_child_a new_child_b new_child_3 new_child_1">
<div>Child #A</div>
<div>Child #b</div>
<div>Child #3</div>
<div>Child #1</div>
</div>
所以到目前为止我得到了这个:
$(".parent").each(function(){
var child_text = $(this).find(".child").text();
var new_class = child_text.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '_').toLowerCase()
$(this).addClass("new_" + new_class);
});
但是我得到了所有文本的一个字符串(即“new_child_1child_2child_3child_4”)。
感谢所有愿意提供帮助的人。
解决方案
您可以从孩子制作一个数组并使用Array.reduce
,如下所示:
$(".parent").each(function() {
var children = $(this).find('.child');
var new_class = Array.from(children).reduce((carry, child) => {
var text = child.innerText.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '_').toLowerCase();
carry += `new_${text} `;
return carry;
}, '');
console.log(new_class);
$(this).addClass(new_class);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
<div class="child">Child #1</div>
<div class="child">Child #2</div>
<div class="child">Child #3</div>
<div class="child">Child #4</div>
</div>
<div class="parent">
<div class="child">Child #A</div>
<div class="child">Child #b</div>
<div class="child">Child #9</div>
<div class="child">Child #K</div>
</div>
推荐阅读
- c++ - 我有一个向量,它具有指向通过接口访问的 2 个子类型的元素的指针。似乎无法重新排列矢量
- python - 获取 IPython 窗口的当前大小
- python - K 表示图未正确显示
- python - Tensorflow 2.0 AutoGraph 如何处理 numpy 操作?
- python - 使用两个 pandas 数据框进行计算
- python - 如何使用 Python 主脚本中定义的变量运行下标?
- c - Lua:“隐藏”功能
- python - 如何使用 Pandas 计算两个 cumsum 列之间的差异
- java - 我找不到从列表中选择项目的方法,每个项目由三个文本字段组成
- docker - ddev 设置中除了 web 和 db 容器之外的其他 SQL Server db 容器