empty()
删除指定元素的内容和子元素,指定元素自身不会被删除
$('div').empty()replaceWith()与replaceAll()都会替换所有匹配的元素为指定元素。
// 1. 新建元素
var $h6 = $('<h6>我是标题6</h6>')
// 2. 替换所有匹配的元素为指定元素
$('h1').replaceWith($h6)
// 或者如下写法
// $h6.replaceAll('h1')复制节点使用clone()方法,传入一个布尔值。true表示深复制,false表示浅复制。
深复制、浅复制的区别
浅复制只会复制元素本身,无法复制原元素绑定的事件。而深复制则会连同绑定事件一同复制。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.js"></script>
    <script>
        $(function () {
            $('button').eq(0).click(function () {
                // 1. 浅复制一个元素
                var $li = $('li:first').clone(false)
                // 将复制的元素假如的ul中
                $('ul').append($li)
            })
            $('button').eq(1).click(function () {
                // 1. 深复制一个元素
                var $li = $('li:first').clone(true)
                // 将复制的元素假如的ul中
                $('ul').append($li)
            })
            $('li').click(function () {
                alert(1)
            })
        })
    </script>
</head>
<body>
    <button>浅复制节点</button>
    <button>深复制节点</button>
    <ul>
        <li>我是第1个li</li>
        <li>我是第2个li</li>
        <li>我是第3个li</li>
        <li>我是第4个li</li>
        <li>我是第5个li</li>
    </ul>
</body>
</html>jQuery部分逻辑思路
parents()方法,在其传入需要获取的父元素选择器(parents('.info')),即可获取相应的父元素。<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        html {
            width: 100%;
            height: 100%;
        }
        body {
            background: url('https://ae04.alicdn.com/kf/Ud1fa6cf847c446e5a65e91f43081d503V.jpg') no-repeat center 0;
        }
        .nav {
            width: 100%;
            height: 48px;
        }
        .mav>img {
            width: 100%;
        }
        .content {
            width: 1000px;
            overflow: hidden;
            background: #ebdbd4;
            margin: 200px auto 0 auto;
        }
        .content>.left {
            float: left;
            width: 150px;
        }
        .content>.right {
            float: right;
            width: 240px;
        }
        .content>.center {
            float: left;
            width: 600px;
            height: 168px;
            background: url(https://ae03.alicdn.com/kf/U7ed12369ffd74c2a9ca1d46907ce3eb9G.jpg)no-repeat 0 0;
            background-size: 600px 168px;
        }
        .center>.comment {
            width: 570px;
            height: 73px;
            margin-left: 15px;
            margin-top: 45px;
            resize: none;
            outline: none;
            border: none;
        }
        .center>.send {
            width: 82px;
            height: 30px;
            margin-top: 4px;
            margin-left: 506px;
            border: none;
            background: #fd8040;
            cursor: pointer;
            outline: none;
            color: white;
        }
        .content>.messageList {
            width: 600px;
            /* height: 600px; */
            background: white;
            float: left;
        }
        .messageList>.info {
            padding: 10px 20px;
            border-bottom: 2px solid #ccc;
        }
        .info>.infoText {
            line-height: 25px;
            margin-bottom: 10px;
        }
        .info>.infoOperation {
            width: 100%;
            overflow: hidden;
        }
        .infoOperation>.infoTime {
            float: left;
            font-size: 13px;
            color: #ccc;
        }
        .infoOperation>.infoHandle {
            float: right;
            font-size: 13px;
        }
        .infoHandle>a {
            text-decoration: none;
            color: #ccc;
            background: url(https://ae04.alicdn.com/kf/Uf79214b661074c6ca3416eccddeb4e61D.jpg)no-repeat 0 0;
            padding-left: 25px;
            margin-left: 10px;
        }
        .infoHandle>a:nth-child(2) {
            background-position: 0 -17px;
        }
        .infoHandle>a:nth-child(3) {
            background-position: 0 -33px;
        }
        .page {
            width: 1000px;
            height: 40px;
            margin: 0 auto;
            text-align: right;
            background-color: #9f5024;
            padding: 10px;
            box-sizing: border-box;
        }
        .page>a {
            text-decoration: none;
            display: inline-block;
            width: 20px;
            height: 20px;
            border: 1px solid #ccc;
            line-height: 20px;
            color: #2b2b2b;
        }
    </style>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.js"></script>
    <script>
        $(function () {
            // 0。 监听内容的实时输入
            $('body').delegate('.comment', 'propertychange input', function () {
                // 判断是否输入了内容
                if ($(this).val().length > 0) {
                    $('.send').prop('disabled', false)
                } else {
                    $('.send').prop('disabled', true)
                }
            })
            // 1. 监听发布按钮的点击
            $('.send').click(function () {
                // 拿到用户输入的内容
                var $text = $('.comment').val()
                // 根据内容创建节点
                var $weibo = createEle($text)
                // 插入微博
                $('.messageList').prepend($weibo)
            })
            // 2. 监听顶点击
            $('body').delegate('.infoUp', 'click', function () {
                $(this).text(parseInt($(this).text()) + 1)
            })
            // 3. 监听踩点击
            $('body').delegate('.infoDown', 'click', function () {
                $(this).text(parseInt($(this).text()) + 1)
            })
            // 4. 监听删除点击
            $('body').delegate('.infoDel', 'click', function () {
                $(this).parents('.info').remove()
            })
            function createEle(text) {
                var $weibo = $('<div class="info"><p class= "infoText" > ' + text + '</p ><p class="infoOperation"><span class="infoTime">' + formatDate() + '</span><span class="infoHandle"><a href="javasript:;" class="infoUp">0</a><a href="javasript: ;" class="infoDown">0</a><a href="javasript: ;" class="infoDel">删除</a></span></p></div > ')
                return $weibo
            }
            // 生成时间
            function formatDate() {
                var date = new Date()
                var arr = [
                    date.getUTCFullYear() + '-',
                    date.getMonth() + 1 + '-',
                    date.getDate() + ' ',
                    date.getHours() + ':',
                    date.getMinutes() + ':',
                    date.getSeconds()
                ]
                return arr.join("")
            }
        })
    </script>
</head>
<body>
    <div class="nav">
        <img src="https://ae02.alicdn.com/kf/U8c9c77c71a30441aa2e439c2552c6fe6q.jpg" alt="">
    </div>
    <div class="content">
        <img src="https://ae02.alicdn.com/kf/Ua155fa993f7641a89d83d88af96a6df2Z.jpg" alt="" class="left">
        <div class="center">
            <textarea class="comment"></textarea>
            <input type="button" value="发布" class="send" disabled>
        </div>
        <img src="https://ae02.alicdn.com/kf/U0cf31717da7d412da7029b72551d9a94K.jpg" alt="" class="right">
        <div class="messageList">
        </div>
    </div>
    <div class="page">
        <a href="javascript:;">1</a>
        <a href="javascript:;">2</a>
        <a href="javascript:;">3</a>
    </div>
</body>
</html>