博客列表 >jQuery 获取内容和属性与 DOM 常用操作

jQuery 获取内容和属性与 DOM 常用操作

蔚蓝世纪
蔚蓝世纪原创
2020年05月30日 20:33:30850浏览

在线预览 变色方块

一、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.实现一种效果的方法有很多种,要多尝试。

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