Blogger Information
Blog 29
fans 1
comment 0
visits 35320
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
jQuery 中常用的 DOM 操作以及使用 jQuery 完成跨域请求操作
祥子弟弟
Original
1161 people have browsed it

一、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. }

跨域查询结果

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post