PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > jQuery操作DOM常用的方法和Ajax应用

jQuery操作DOM常用的方法和Ajax应用

残破的蛋蛋
残破的蛋蛋 原创
2021年01月23日 22:17:54 923浏览

jQuery操作DOM常用的方法和Ajax应用

一、jQuery操作DOM

1.1 添加元素

1.1.1 appendTo在被选择的元素尾部插入指定的内容。

  • 语法

$(context).appendTo(selector);

  • 案例
  1. $('<h2>祝大家春节快乐!</h2>').appendTo(document.body);
  • 效果图

appendTo

1.1.2 与appendTo作用一样的还有一个append,该方法是在被选择的元素结尾添加指定的内容,注意添加的内容还是在被选择的元素内部

  • 语法

$(selector).append(content)

  • 案例
  1. $('body').append('<h2>Hello World!</h2>');
  • 效果图

append

同时,append方法的参数还可以传一个函数,具体使用方法请看下面的案例:

  1. const ol = $('body').append('<ol></ol>');
  2. $('ol').append(() => {
  3. let str = '';
  4. for (let i = 0; i < 5; i++) {
  5. str += `<li>新品上市${i+1}</li>`;
  6. }
  7. return str;
  8. });
  • 效果图

append参数是函数时

以上两个方法,还有一个简化记忆的方法:

  • 子元素.appendTo(父元素)
  • 父元素.append(子元素)

二、jQuery种的AJAX请求

2.1 $.get()请求

  1. <button>1. $.get()请求数据</button>
  2. <script>
  3. $("button:first-of-type").click(function (ev) {
  4. console.log(ev);
  5. // users.php?id=1 查询字符串方式,还可以用对象的方式:
  6. // get("users.php", {id: 1}, function (data) {});
  7. $.get("users.php", {id: 2}, function (data) {
  8. console.log(data);
  9. $(ev.target).after("<div></div>").next().html(data);
  10. });
  11. });
  12. </script>

2.2 $.post()请求

  1. <button>2. $.post()请求数据</button>
  2. <script>
  3. $("button:nth-of-type(2)").click(function (ev) {
  4. console.log(ev);
  5. $.post("users.php", {id: 3}, function (data) {
  6. console.log(data);
  7. $(ev.target).after("<div></div>").next().html(data);
  8. })
  9. });
  10. </script>

2.3 $.ajax()请求

  1. <button>3. $.ajax()JSONP跨域请求数据</button>
  2. <script>
  3. $("button:last-of-type").click(function (ev) {
  4. $.ajax({
  5. type: "get",
  6. url: "http://localhost:9999/index.php?id=2",
  7. dataType: "jsonp",
  8. // 告诉跨域访问的服务器需要返回的函数名称
  9. // 在一个 jsonp 中重写回调函数的字符串。相当于用jsonp替换掉默认的callback
  10. jsonp: "jsonp",
  11. // 在一个 jsonp 中规定回调函数的名称。
  12. jsonpCallback: "jsonp",
  13. success: function (data) {
  14. console.log(data);
  15. $("button:last-of-type").after("<div>").next().html(`${data.name}:${data.email}`);
  16. },
  17. });
  18. });
  19. </script>

三、使用jQuery写一个留言板(ToDoList)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>留言板</title>
  7. <!-- <link rel="stylesheet" href="message.css"> -->
  8. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  9. <style>
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. font-size: 10px;
  14. box-sizing: border-box;
  15. font-family: Helvetica Neue, Helvetica, PingFang SC, Tahoma, Arial, sans-serif;
  16. }
  17. ul,
  18. li {
  19. list-style: none;
  20. }
  21. .box {
  22. width: 50rem;
  23. height: 10rem;
  24. margin: 1rem auto;
  25. }
  26. h2 {
  27. font-size: 3rem;
  28. display: flex;
  29. justify-content: center;
  30. margin-bottom: 1rem;
  31. }
  32. #message {
  33. display: flex;
  34. flex-flow: column nowrap;
  35. width: 100%;
  36. }
  37. #message textarea {
  38. width: 100%;
  39. min-height: 10rem;
  40. padding: .6rem 1rem;
  41. border: 1px solid #c9c9c9;
  42. border-radius: 2px;
  43. outline: none;
  44. font-size: 1.4rem;
  45. font-family: inherit;
  46. }
  47. #message .button {
  48. width: 100%;
  49. height: 5rem;
  50. margin-top: 1rem;
  51. }
  52. #message .button .btn {
  53. padding: 0 2rem;
  54. height: 3.8rem;
  55. border-radius: 3px;
  56. border-width: 0;
  57. font-size: 1.2rem;
  58. outline: none;
  59. cursor: pointer;
  60. }
  61. #message .button .btn:hover {
  62. transition: all .3s;
  63. opacity: .8;
  64. }
  65. #message .button .btn.btn-submit {
  66. background-color: #3e7771;
  67. color: #ffffff;
  68. }
  69. #message .button .btn.btn-rest {
  70. margin-left: .5rem;
  71. }
  72. #message .content-wrap em.tips {
  73. font-style: normal;
  74. color: red;
  75. margin-top: 1rem;
  76. }
  77. #list {
  78. width: 100%;
  79. display: grid;
  80. grid-template-columns: 1fr;
  81. grid-template-rows: auto;
  82. margin-top: 1rem;
  83. }
  84. #list li {
  85. display: grid;
  86. grid-template-columns: 4rem 1fr;
  87. grid-template-rows: auto auto;
  88. gap: .5rem;
  89. margin-top: 1rem;
  90. }
  91. #list li.item .avatar {
  92. width: 4rem;
  93. height: 4rem;
  94. }
  95. #list li.item .avatar img {
  96. width: 100%;
  97. height: 100%;
  98. border-radius: 50%;
  99. }
  100. #list li.item .comment {
  101. display: grid;
  102. grid-template-columns: 1fr;
  103. row-gap: .5rem;
  104. }
  105. #list li.item .comment .title {
  106. display: flex;
  107. flex: rows nowrap;
  108. align-items: center;
  109. }
  110. #list li.item .comment .title .nick>* {
  111. font-size: 1.6rem;
  112. color: #000000;
  113. }
  114. #list li.item .comment .title .time {
  115. color: #8c92a4;
  116. margin-left: .5rem;
  117. font-size: 1.2rem;
  118. color: #8c92a4;
  119. font-size: 1.4rem;
  120. }
  121. #list li.item .comment .context {
  122. color: #8c92a4;
  123. font-size: 1.2rem;
  124. color: #40485B;
  125. font-size: 1.4rem;
  126. margin: .5rem 0;
  127. }
  128. #list li.item .del {
  129. margin: .5rem 0;
  130. display: grid;
  131. cursor: pointer;
  132. border: none;
  133. place-self: center end;
  134. grid-area: 2 / 1 / 2 / 3;
  135. padding: .5rem;
  136. outline: none;
  137. }
  138. hr {
  139. border-color: rgba(222, 222, 222, .5);
  140. }
  141. </style>
  142. </head>
  143. <body>
  144. <div class="box">
  145. <h2>留言板</h2>
  146. <div id="message">
  147. <div class="content-wrap">
  148. <textarea class="content" name="message" value="111" placeholder="请输入内容"></textarea>
  149. <em class="tips" style="display: none;">* 留言内容不能为空!</em>
  150. </div>
  151. <div class="button">
  152. <button class="btn btn-submit">立即提交</button>
  153. <button type="reset" class="btn btn-reset">重置</input>
  154. </div>
  155. </div>
  156. <hr>
  157. <ul id="list">
  158. </ul>
  159. </div>
  160. <script>
  161. $(".btn-submit").click(function (ev) {
  162. let msg = $(".content").val();
  163. console.log(ev.target);
  164. if (msg === "") {
  165. $(".tips").css("display", "block");
  166. return false;
  167. }
  168. // 文本结构
  169. let str = ` <li class="item" >
  170. <div class="avatar">
  171. <img src="data:image/png;base64,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" />
  172. </div>
  173. <div class="comment">
  174. <div class="title">
  175. <span class="nick"><b>残破的蛋蛋</b></span>
  176. <div class="time">${formatDate(Date.now())}</div>
  177. </div>
  178. <div class="context">${msg}</div>
  179. <hr>
  180. </div>
  181. <button class="del" onclick="del(this)">删除</button>
  182. </li>
  183. `;
  184. $("#list").prepend(str);
  185. });
  186. // 删除元素
  187. function del (element) {
  188. console.log(element.parentNode);
  189. // console.log(this);
  190. if (confirm("确认删除这条评论吗?")) {
  191. element.parentNode.outerHTML = null;
  192. }
  193. }
  194. // 重置内容
  195. $(".btn-reset").click(function (ev) {
  196. console.log(ev.currentTarget);
  197. $(".content").val(null);
  198. });
  199. // 获取时间
  200. function formatDate(time) {
  201. let date = new Date(time);
  202. console.log(date);
  203. let y = date.getFullYear();
  204. console.log(y);
  205. let m = date.getMonth();
  206. m = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1
  207. console.log(m);
  208. let d = date.getDate();
  209. console.log(d);
  210. let h = date.getHours();
  211. console.log(h);
  212. let i = date.getMinutes();
  213. console.log(i);
  214. let s = date.getSeconds();
  215. console.log(s);
  216. return `${y}-${m}-${d} ${h}-${i}-${s}`;
  217. }
  218. </script>
  219. </body>
  220. </html>
  • 效果图:

jQuery写的留言板

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议