javascript - 用相同的类包裹相邻的元素

标签 javascript jquery html

<分区>

我需要使用 jQuery 将具有相同类的相邻元素包装在一个 div 中。到目前为止,我正在使用 .wrapAll 函数将具有相同类的元素包装在一个 div 中。

HTML:

<a class="image"></a>
<a class="image"></a>
<a class="image"></a>
<p>Some text</p>
<a class="image"></a>
<a class="image"></a>

脚本:

$( "a.image" ).wrapAll( "<div class='gallery'></div>" );

输出:

<div class='gallery'>
    <a class="image"></a>
    <a class="image"></a>
    <a class="image"></a>
    <p>Some text</p>
    <a class="image"></a>
    <a class="image"></a>
</div>

不过,我需要将带有“图片”类的相邻元素包装在带有“厨房”类的单独的div中。所以输出需要看起来像这样:

<div class='gallery'>
    <a class="image"></a>
    <a class="image"></a>
    <a class="image"></a>
</div>
<p>Some text</p>
<div class='gallery'>
    <a class="image"></a>
    <a class="image"></a>
</div>

有没有办法使用 jQuery 来做到这一点?

最佳答案

  1. 您可以使用 .not 函数获取不相邻的图像(第一张和紧接在 p 之后的图像)。
  2. 对于它们中的每一个,您使用(.nextUntilandSelf)收集相邻图像。
  3. 最后使用 .wrapAll 将它们全部包装起来

$('.image').not('.image+.image').each(function(){
  $(this).nextUntil(':not(.image)').andSelf().wrapAll('<div class="gallery" />');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="image">1</a>
<a class="image">2</a>
<a class="image">3</a>
<p>Some text</p>
<a class="image">4</a>
<a class="image">5</a>

http://jsbin.com/gonino/edit?html,js

更新这是片段的结果。

enter image description here

关于javascript - 用相同的类包裹相邻的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34610488/

相关文章:

javascript - 无法通过javascript更改html属性

javascript - jQuery插件: Expanding Boxes/Sliding Panels

html - 我怎样才能得到高度 : 100% to account for existing pixel-heighted elements within the same div?

jquery - 如何使内容适合剩余高度

javascript - 使用 jquery 的拖放功能

html - 删除 HTML 标签中的注释

html - 预加载 20MB 以上的图像。值得尝试吗?

javascript - Bootstrap 模式弹出窗口上的视频在关闭后继续播放音频

javascript - 从文件夹创建图库

Javascript if else 定时器在特定日期