javascript - JQuery 在克隆后包裹整个部分

标签 javascript jquery html css

先看jsfiddle

JSFIDDLE

我必须转换源结构

<div class="out">
 <a>im here</a>
 <a>to save</a>
 <a>our</a>
 <a>country</a>
</div>

进入

<div class="newout">
    <ul>
        <li class="haha">
            <a>im here</a>
            <span><a>im here</a></span>
        </li>
        <li class="haha">
            <a>to save</a>
            <span><a>to save</a></span>
        </li>
        <li class="haha">
            <a>our</a>
            <span><a>our</a></span>
        </li>
        <li class="haha">
            <a>country</a>
            <span><a>country</a></span>
        </li>
    </ul>
</div>

这意味着我必须执行以下程序:

  • 1.克隆a标签
  • 2.用span标签包裹
  • 3.将其附加到之前的a标签
  • 4.将之前的标签包裹到li标签中,并添加class
  • 5.然后将之前的所有元素包装到 ul 标签

我不知道如何使用JQuery来实现STEP4。我不知道如何获取这些标签并添加包装。

非常感谢!

最佳答案

尝试

$(document).ready(function() {

    var $ct = $('.out').removeClass('out').addClass('newout');
    var $ul = $('<ul />').appendTo($ct);
    $ct.children('a').each(function(){
        var $this = $(this);
        $this.wrap('<li class="haha" />');
        $('<span />').append($this.clone()).insertAfter($this);
        $this.parent().appendTo($ul)
    })

});

演示:Fiddle

或者

$(document).ready(function () {    
    var $ct = $('.out').removeClass('out').addClass('newout');
    var $ul = $('<ul />').appendTo($ct);
    $ct.children('a').each(function () {
        var $this = $(this);
        $('<li />', {
            'class': 'haha'
        }).append(this).append($('<span />').append($this.clone())).appendTo($ul)
    })
});

演示:Fiddle

关于javascript - JQuery 在克隆后包裹整个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19312404/

相关文章:

html - Bootstrap 主容器被导航栏遮挡

javascript - typescript - Jasmine 中无效参数的测试用例

javascript - jQuery 将本地文件移动到另一个目录

javascript - 给出的行大小不同于 2” Google 图表

javascript - jQuery 最接近的方法不起作用

javascript - appendTo - 旁边而不是下面

javascript - 通过根据内容自动调整高度来防止文本区域 ENTER 行为

javascript - where 子句使用 IN 查询问题

javascript - 单击提交按钮将值从一个文本框填充到另一个文本框

php - 从 URL 参数自动填充输入表单字段