Skip to content
Shimon's BlogShimon's Blog
主页
杂谈
  • 主页
      • 代码笔记
          • 网页入门
            • Http 与 Https 介绍
              • JavaScript 教程
                  • jQuery
                    • AJAX
                      • jQuery 介绍
                        • 事件
                          • 修改 DOM 结构
                            • 添加 DOM
                              • 删除节点
                              • 动画
                                • 扩展
                                  • 操作 DOM
                                    • 选择器

                                修改 DOM 结构

                                Shimon Zhan2019年11月3日
                                • jQuery
                                大约 2 分钟

                                此页内容
                                • 添加 DOM
                                • 删除节点

                                章节过时

                                而且目前浏览器 API 已经基本统一,除非兼容旧版本 IE,否则无需针对不同浏览器写不同的代码。

                                直接使用浏览器提供的 API 对 DOM 结构进行修改,不但代码复杂,而且要针对浏览器写不同的代码。

                                有了 jQuery,我们就专注于操作 jQuery 对象本身,底层的 DOM 操作由 jQuery 完成就可以了,这样一来,修改 DOM 也大大简化了。

                                # 添加 DOM

                                要添加新的 DOM 节点,除了通过 jQuery 的 html() 这种暴力方法外,还可以用 append() 方法,例如:

                                <div id="test-div">
                                  <ul>
                                    <li><span>JavaScript</span></li>
                                    <li><span>Python</span></li>
                                    <li><span>Swift</span></li>
                                  </ul>
                                </div>
                                

                                如何向列表新增一个语言? 首先要拿到 <ul> 节点:

                                const ul = $("#test-div>ul");
                                

                                然后,调用 append() 传入 HTML 片段:

                                ul.append("<li><span>Haskell</span></li>");
                                

                                除了接受字符串,append() 还可以传入原始的 DOM 对象,jQuery 对象和函数对象:

                                // 创建DOM对象:
                                const ps = document.createElement("li");
                                ps.innerHTML = "<span>Pascal</span>";
                                // 添加DOM对象:
                                ul.append(ps);
                                
                                // 添加jQuery对象:
                                ul.append($("#scheme"));
                                
                                // 添加函数对象:
                                ul.append(function (index, html) {
                                  return "<li><span>Language - " + index + "</span></li>";
                                });
                                

                                传入函数时,要求返回一个字符串、DOM 对象或者 jQuery 对象。因为 jQuery 的 append() 可能作用于一组 DOM 节点,只有传入函数才能针对每个 DOM 生成不同的子节点。

                                append() 把 DOM 添加到最后,prepend() 则把 DOM 添加到最前。

                                另外注意,如果要添加的 DOM 节点已经存在于 HTML 文档中,它会首先从文档移除,然后再添加,也就是说,用 append(),您可以移动一个 DOM 节点。

                                如果要把新节点插入到指定位置,例如,JavaScript 和 Python 之间,那么,可以先定位到 JavaScript,然后用 after() 方法:

                                const js = $("#test-div>ul>li:first-child");
                                js.after("<li><span>Lua</span></li>");
                                

                                也就是说,同级节点可以用 after() 或者 before() 方法。

                                # 删除节点

                                要删除 DOM 节点,拿到 jQuery 对象后直接调用 remove() 方法就可以了。如果 jQuery 对象包含若干 DOM 节点,实际上可以一次删除多个 DOM 节点:

                                const li = $("#test-div>ul>li");
                                li.remove(); // 所有<li>全被删除
                                
                                上次编辑于: 2022/4/19 07:13:07
                                贡献者: ShimonZhan
                                上一页
                                事件
                                下一页
                                动画
                                Copyright © 2021-present Shimon Zhan