一、jQuery 中常用的 DOM 操作

使用 jQuery 库一定不能忘了导入

  1. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>

1.添加元素
通过和原生 js 的对比来进行元素添加操作

  1. // 原生方式
  2. const h2 = document.createElement("h2");
  3. h2.textContent = "原生js往页面中添加dom元素之元素添加";
  4. document.body.appendChild(h2);
  5. document.body.insertAdjacentHTML(
  6. "afterbegin",
  7. "<h2>原生js往页面添加dom元素之html字符串添加</h2>"
  8. );
  9. // jQuery方式
  10. $("<h2>jQuery添加dom元素</h2>").appendTo(document.body);
  11. $("<h2>").text("jQuery添加dom元素之子元素添加").appendTo(document.body);
  12. // 子元素.appendTo(父元素)
  13. $("body").append("<h2>jQuery添加dom元素之父元素添加</h2>");
  14. // 父元素.append(子元素)
  15. $("body").append("<ol></ol>");
  16. $("ol").append(() => {
  17. let str = "";
  18. for (let i = 0; i < 5; i++) {
  19. str += `<li><a href="">通过append添加的列表:${i + 1}</a></li>`;
  20. }
  21. return str;
  22. });

2.删除元素
删除元素的方法在 jQuery 中有很多,比较常用的有 empty()方法、remove()方法
empoty()方法
$("ol").empty():把 ol 下的的子元素包括文本节点全部删除
可以通过两张图片来观察 empty()方法的作用

这张图是没有使用 empty()方法时候的 html 文档结构

这张图片是使用了 empty()方法之后的 html 文档结构

remove()方法: 从 dom 中把所有段落删除,包括本身
$("ol").remove():将 ol 下的子元素包括文本节点全部删除,包括 ol 本身也会删掉
下面通过两张图片对比来看出 remove()的强大

这张图是没有使用 remove()方法时候的 html 文档结构

这张图片是使用了 remove()方法之后的 html 文档结构

使用 jQuery 事件操作完成一个简单的留言板
留言板案例在以前的博客中有提到过,是用原生完成的一个简单的留言板,现在只不过是使用 jQuery 中的一些事件以及 dom 操作方法来将原生的一些东西替代掉

  1. // 获取元素
  2. const msg = $("textarea");
  3. const lists = $("#list");
  4. // 创建事件,当内容输入文本框时,将其打印到下边
  5. msg.keydown((ev) => {
  6. // 键盘事件中的key属性,表示按下的键名
  7. // console.log(ev.key);
  8. if (ev.key === "Enter") {
  9. // 非空判断
  10. // console.log(ev.currentTarget.value);
  11. if (ev.currentTarget.value.length === 0) {
  12. alert("内容为空");
  13. msg.focus();
  14. } else {
  15. // 将留言内容添加到列表中
  16. // 创建留言
  17. let olStr = `<div><li>${ev.currentTarget.value}</li><button onclick="del(this)">删除留言</button></div>`;
  18. // 应该将最新的信息放在第一条
  19. lists.append(olStr);
  20. // 按下回车后,清空留言板
  21. ev.currentTarget.value = null;
  22. }
  23. }
  24. });
  25. // 删除留言
  26. function del(ele) {
  27. // DOM接口的outerHTML属性获取描述元素(包括其后代)的序列化HTML片段。它也可以设置为用从给定字符串解析的节点替换元素。
  28. // 返回时,内容包含描述元素及其后代的序列化HTML片段。
  29. return confirm("是否删除?") ? (ele.parentNode.outerHTML = null) : false;
  30. }

二、jQuery 完成跨域请求操作

使用 jQuery 完成 ajax 异步请求操作和 jsonp 跨域操作是使用 jQuery 对象的$.get(),$.post()和$.ajax()方法完成的,其中$.get()和$.post()都是$.ajax()方法的快捷操作,他们的参数都是(url请求地址,qs查询参数,callback回调函数).

1.$.get(url 请求地址,qs 查询参数,callback 回调函数)请求
在这里我使用的是 php 作为后端代码,users.php 中是使用二维数组模拟数据表的查询结果

  1. $(".get").click(function (ev) {
  2. $.get("users.php", { id: 2 }, function (data) {
  3. // console.log(data);
  4. // console.log(ev.target);
  5. $(ev.target).after("<div></div>").next().html(data);
  6. });
  7. });

查询结果

2.$.post(url 请求地址,qs 查询参数,callback 回调函数)请求
post 请求和 get 一样,只不过是查询参数设置不同

  1. $(".post").click(function (ev) {
  2. $.post("users.php", { id: 3 }, function (data) {
  3. // console.log(data);
  4. // console.log(ev.target);
  5. $(ev.target).after("<div></div>").next().html(data);
  6. });
  7. });

请求结果

使用$.ajax()方法同样可以完成上边两个请求的操作

  1. $(".post").click(function (ev) {
  2. $.ajax({
  3. type: "post",
  4. url: "users.php",
  5. data: { id: 1 },
  6. dataType: "html",
  7. success: function (data) {
  8. $(ev.target).after("<div></div>").next().html(data);
  9. },
  10. });
  11. });

请求结果

3. $.ajax()实现jsonp跨域
$.ajax()方法实现的跨域操作其实也是利用的 jsonp 的原理,和原生js中的差不多。

  1. $(".jsonp").click(function (ev) {
  2. $.ajax({
  3. type: "get",
  4. url: "http://world.io/text.php?id=2&jsonp=?",
  5. dataType: "jsonp",
  6. // 告诉跨域访问的服务器,前端需要返回的函数名
  7. jsonpCallback: "show",
  8. });
  9. });
  10. function show(data) {
  11. console.log(data);
  12. $(".jsonp").after("<div></div>").next().html(`${data.name}:(${data.email})`);
  13. }

跨域查询结果

更多相关文章

  1. 初识 jQuery 与$()工厂函数的四种用法,四种好用的 getter/setter
  2. 通俗易懂!Java 线程池详解
  3. 太硬核了!一文爆肝所有设计模式!
  4. Jackson,最牛掰的 Java JSON 解析器
  5. js 中数组常用方法介绍以及 JSON 对象的两个方法展示和跨域请求
  6. 常用的字符串方法介绍以及使用事件代理实现一个简单的留言板
  7. js 中的构造函数与常用的 dom 元素操作(dom 元素的增删改查)
  8. hello 51cto
  9. php学习笔记(接口与抽象类的区别与联系)

随机推荐

  1. 尝鲜 ES2019 的新功能 [每日前端夜话0x38
  2. 表弟的数学题,我竟然用了python才解出来
  3. 7 个开放式 CSS 面试题及回答策略 [每日
  4. 在北京看场雪为什么这么难?
  5. 用python对2019年二手房价格进行数据分析
  6. 基于 Babel 的 npm 包的最小化设置 [每日
  7. 一文学懂 TypeScript 的类型 [每日前端夜
  8. 通过 Web 控制蓝牙设备:WebBluetooth入门
  9. 7个 Javascript 面试题及回答策略 [每日
  10. JavaScript 高阶函数快速入门 [每日前端