Blogger Information
Blog 43
fans 1
comment 0
visits 33809
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
jQuery 获取内容和属性与 DOM 常用操作
蔚蓝世纪
Original
849 people have browsed it

在线预览 变色方块

一、jQuery常用的 getter/setter 操作

jQuery 可以通过以下方法获取内容和属性,并进行参数设置。

  1. attr():对html属性进行操作
  2. css():针对html元素的style属性进行操作
  3. val():获取设置表单元素的值
  4. html()/text():元素内容操作

代码演示:

  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. <script src="lib/jquery-3.5.1.js"></script>
  7. <title>基本的getter/setter-1(设置和获取)</title>
  8. <style>
  9. body {
  10. display: flex;
  11. flex-direction: column;
  12. align-items: center;
  13. color: #666;
  14. }
  15. form {
  16. width: 400px;
  17. /* height: 150px; */
  18. padding: 20px 10px;
  19. border: 1px solid #aaa;
  20. box-shadow: 0 0 5px #888;
  21. box-sizing: border-box;
  22. background-color: #eee;
  23. display: grid;
  24. grid-template-columns: 80px 200px;
  25. gap: 10px;
  26. place-content: center center;
  27. }
  28. button {
  29. grid-column: 2 / 3;
  30. height: 26px;
  31. }
  32. button:hover {
  33. color: white;
  34. background-color: #888;
  35. border: none;
  36. cursor: pointer;
  37. }
  38. .red {
  39. color: red;
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <h2 class="red">用户登录</h2>
  45. <form action="handle.php" method="POST">
  46. <label for="email">Email:</label>
  47. <input
  48. type="email"
  49. name="email"
  50. id="email"
  51. autofocus
  52. value="lulu@php.cn"
  53. />
  54. <label for="password">Password:</label>
  55. <input type="password" name="password" id="password" value="不少于6位" />
  56. <label for="confirm">记住我:</label>
  57. <div>
  58. <input type="radio" name="save" id="confirm" value="1" checked /><label
  59. for="confirm"
  60. >保存</label
  61. >
  62. <input type="radio" name="save" id="cancel" value="0" /><label
  63. for="cancel"
  64. >放弃</label
  65. >
  66. </div>
  67. <button>登录</button>
  68. </form>
  69. <script>
  70. var form = $("form");
  71. console.log(form);
  72. // 1.attr():对html属性进行操作
  73. // attr(name): getter 获取某个参数的属性
  74. // attr(name, value): setter 设置某个参数的属性
  75. console.log(form.attr("action"));
  76. form.attr("action", "admin/check.php");
  77. console.log(form.attr("action"));
  78. form.attr({
  79. action: "select.php?id=4", //换成对象自变量格式
  80. method: "post",
  81. });
  82. //attr(属性, function()):第二个参数支持回调函数
  83. form.attr("action", function () {
  84. // 动态设置处理脚本, 如果是get, 则返回脚本query.php?id=1,如果非get, 则返回脚本register.php
  85. var method = $(this).attr("method").toLowerCase();
  86. return method === "get" ? "query.php?id=1" : "register.php";
  87. });
  88. // 2.css():针对html元素的style属性进行操作
  89. //不仅可以获取到style属性的值,还可以获取到该元素所有样式
  90. //原生方法获取属性
  91. console.log(
  92. window.getComputedStyle(document.querySelector("form")).width
  93. );
  94. //jQuery方式获取属性更简单
  95. console.log(form.css("width"));
  96. form.css("border", "1px solid skyblue");
  97. form.css({
  98. backgroundColor: "lightgreen",
  99. border: "2px dashed blue",
  100. });
  101. form.css("background-color", function () {
  102. //这是一个有四个颜色值的数组,目标是从这个数组中随机返回一个值
  103. var bgcolor = ["plum", "lightblue", "tan", "lime", "cyan", "pink"];
  104. // 返回哪个值,由一个随机索引决定,索引必须在0 -3之间
  105. var randomIndex = Math.floor(Math.random() * bgcolor.length);
  106. return bgcolor[randomIndex]; //每刷新一次页面,对话框的背景就会发生变化
  107. });
  108. // 3. val():获取设置表单元素的值
  109. console.log($("#email").val());
  110. $("#email").val("Anna@php.cn");
  111. console.log($("#email").val());
  112. // 获取选中的按钮的值
  113. console.log($("input:radio[name=save]:checked").val()); //这种获取方式较麻烦
  114. //用回调函数设置回默认值
  115. $("#email").val(function () {
  116. return this.defaultValue;
  117. });
  118. // 4.html()/text():获取和设置元素内容
  119. //innerText ===> text();
  120. //原生方式
  121. document.querySelector("h2").innterHMTL = "请登录";
  122. //jQuery方式
  123. $("h2").text("赶紧登录");
  124. //innerHTML===>html()
  125. document.querySelector("h2").innterHMTL =
  126. '<span style="color:blue">请登录</span>';
  127. $("h2").html('<span style="color:blue">请登录</span>');
  128. $("h2").html("请登录");
  129. //html()可以替换text()方法,但是text()不能替换html()方法
  130. </script>
  131. </body>
  132. </html>

输出效果:

二、jQuery常用的DOM操作方法

通过 jQuery,可以很容易地添加新元素或者内容。
添加新内容的四个 jQuery 方法:

  1. append() - 在被选元素的结尾插入内容
  2. prepend() - 在被选元素的开头插入内容
  3. after() - 在被选元素之后插入内容
  4. before() - 在被选元素之前插入内容
  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. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  7. <title>常用的DOM操作</title>
  8. <style>
  9. .active {
  10. color: red;
  11. }
  12. </style>
  13. </head>
  14. <body></body>
  15. </html>
  16. <script>
  17. // 1.元素的添加与替换,父级.append(元素)
  18. $("body").append("<ol>");
  19. // 将子元素.appendTo添加到父级元素中
  20. $("<li>").text("apples").appendTo("ol");
  21. $("<li>").addClass("active").text("oranges").appendTo("ol");
  22. //添加元素时同时创建元素的属性
  23. $("<li>", {
  24. id: "fruits",
  25. style: "background-color:skyblue",
  26. })
  27. .html("<a href=''>peaches</a>")
  28. .appendTo("ol");
  29. //使用回调函数append(callback)添加元素
  30. $("ol").append(function () {
  31. var res = "";
  32. for (var i = 0; i < 5; i++) {
  33. res += "<li><a href=''>new goods" + (i + 1) + "</a></li>";
  34. }
  35. return res;
  36. });
  37. //2.从第3个元素前面添加<li> before(),在某个元素之前添加
  38. $("ol>li:nth-of-type(3)").before("<li>pears</li>");
  39. //3.insertAfter()
  40. $("<li>lemons</li>").insertAfter("ol>li:nth-of-type(4)");
  41. //4. prepend(),prependTo(),将新元素添加到头部
  42. $("<li>最新产品</li>").prependTo("ol");
  43. //5.元素的替换 : replaceWith()
  44. $("ol>li:last-of-type").replaceWith("<h3>Hello JuJu</h3>");
  45. $("<p>Hello Mockey...</p>").replaceAll("ol>li:nth-of-type(2)");
  46. </script>

输出效果:

三、jQuery 过滤器

  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. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  7. <title>jQuery常用过滤器</title>
  8. </head>
  9. <body>
  10. <ul id="first">
  11. <li>item1</li>
  12. <li>item2</li>
  13. <ul>
  14. <li>item1</li>
  15. <li class="red">item2</li>
  16. <li>item3</li>
  17. </ul>
  18. <li>item3</li>
  19. <li>item4</li>
  20. <li>item5</li>
  21. </ul>
  22. <ul id="second">
  23. <li>item1</li>
  24. <li>item2</li>
  25. <li>item3</li>
  26. <li>item4</li>
  27. <li>item5</li>
  28. </ul>
  29. </body>
  30. </html>
  31. <script>
  32. //children
  33. var ul2 = $("ul").filter("#second");
  34. console.log(ul2.children()); //查看ul2里面有多少个子元素
  35. var children = ul2.children();
  36. //first():第一个
  37. children.first().css("background", "lightblue");
  38. //last():最后一个
  39. children.last().css("background", "lightblue");
  40. //eq(n):返回任何一个
  41. children.eq(2).css("background", "lightblue");
  42. // children()只限子元素
  43. ul2.children("red").css("color", "red");
  44. //find():对所有层级查询 效率比较低,但是直观
  45. ul2.find("red").css("color", "red");
  46. console.log($("ul").find("red"));
  47. //仅获取第2个和第3个子元素
  48. $("ul").filter("#second").children().slice(1, 3).css("color", "red");
  49. console.log($("ul").filter("#second"));
  50. //原生方法
  51. var ul1 = document.querySelectorAll("#first > li:first-of-type");
  52. ul1.forEach(function (item) {
  53. item.style.color = "red";
  54. });
  55. var ul1 = document.querySelectorAll("#first > li:last-of-type");
  56. ul1.forEach(function (item) {
  57. item.style.color = "skyblue";
  58. });
  59. var ul1 = document.querySelectorAll("#first > li:nth-of-type(-n+3)");
  60. ul1.forEach(function (item) {
  61. item.style.color = "orangered";
  62. });
  63. </script>

输出效果:

四、总结

1.jQuery 过滤器使用起来更加快捷。
2.实现一种效果的方法有很多种,要多尝试。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:dom操作内容很多, 咱们课上介绍不到三分之一, 更多要查手册
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
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!