【发布时间】:2018-02-21 03:21:38
【问题描述】:
我有一堆元素都属于某个数字的一部分。
<div class="section-1"></div>
<div class="section-1"></div>
<div class="section-2"></div>
<div class="section-2"></div>
<div class="section-2"></div>
<div class="section-3"></div>
<div class="section-4"></div>
<div class="section-4"></div>
...
我想用父元素包装每组相同的部分元素,即使是只出现一次的部分。
这是我想出的一个快速且有效但非常肮脏的解决方案:
$('.section-1').wrapAll('<div class="parent-section">');
$('.section-2').wrapAll('<div class="parent-section">');
$('.section-3').wrapAll('<div class="parent-section">');
$('.section-4').wrapAll('<div class="parent-section">');
$('.section-5').wrapAll('<div class="parent-section">');
$('.section-6').wrapAll('<div class="parent-section">');
我试图通过使用 each() 提出一个稍微优雅的解决方案
$('.section-1,' +
'.section-2,' +
'.section-3,' +
'.section-4,' +
'.section-5,' +
'.section-6').each(function () {
$(this).wrapAll('<div class="parent-section">');
});
但后来我意识到这会将每个类名的每个单独出现都包装起来,而不是将它们包装成一个组。
最重要的是,虽然目前只有 6 个部分,但未来可能会更多(7、8、9、10、11 等),所以如果该功能可以与任何数字一起使用,那就太好了部分。
非常感谢任何帮助。
【问题讨论】:
-
如果你控制了标记,你能不能给所有这些 div 一些类,比如简单的
section,这样你就可以选择元素了吗? -
是的,我可以控制标记并添加一个公共类。
-
我的错,我误会了。这无济于事,您正在尝试包装每个组。
-
如果您控制标记,为什么不在生成标记的循环中执行此操作?
-
对不起,我实际上并没有完全控制标记,因为我不能添加新元素,我只能更改现有类或添加新类。
标签: javascript jquery