jquery - 使用Jquery用html标签包裹动态内容

标签 jquery html dom

我有一个返回项目动态列表的页面

<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item6</li>
</ul>

我需要一种方法来在每组 3 个列表元素周围插入标签。基本上把上面的代码改成这样

<ul>
 <div>
  <li>item1</li>
  <li>item2</li>
  <li>item3</li>
 </div>
 <div> 
  <li>item4</li>
  <li>item5</li>
  <li>item6</li>
 </div>
</ul>

我一直在尝试使用 Jquery Wrap()、WrapAll()、WrapInner()...但到目前为止没有成功。非常感谢关于此的任何解决方案或想法。

最佳答案

这是另一种动态生成 HTML 并遵循正确语义的方法,只允许 <li>直接在 <ul> 内的元素元素:

$(function(){
    const GROUP_COUNT = 3;
    var liElements = $('ul > li');
    var count = liElements.length;
    var html = '';

    for (var i = 0; i < count; i += GROUP_COUNT) {
        html += '<li><ul>';
        liElements.slice(i, i + GROUP_COUNT).each(function(){
            html += '<li>' + $(this).html() + '</li>';
        });
        html += '</ul></li>';
    }

    $('ul').html(html);
});

您可以更改 GROUP_COUNT按不同数量的元素分组。

此代码将转换:

<ul>
  <li>item1</li>
  <li>item2</li>
  <li>item3</li>
  <li>item4</li>
  <li>item5</li>
  <li>item6</li>
  <li>item7</li>
</ul>

进入:

<ul>
  <li>
    <ul>
      <li>item1</li>
      <li>item2</li>
      <li>item3</li>
    </ul>
  </li>
  <li>
    <ul>
      <li>item4</li>
      <li>item5</li>
      <li>item6</li>
    </ul>
  </li>
  <li>
    <ul>
      <li>item7</li>
    </ul>
  </li>
</ul>

关于jquery - 使用Jquery用html标签包裹动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1127339/

相关文章:

JavaScript 事件 - 页面加载期间还是之前?

javascript - 最初隐藏一个 div 以供以后显示

javascript - 使用 elementFromPoint() 方法检查元素可见性

javascript - 在事件监听器内部或外部操作 DOM 元素

javascript - 动态字符计数

javascript - 选择2 :unselect doesn't work properly

php - 简化我的 Jquery xajax 之类的功能

html - 下拉列表似乎不适用于版本 3

HTML 视频不播放音频

javascript - 调整 HTML5 Canvas 元素的大小