博客列表 >初探jQuery($(),attr(),css(),val(),html(),text(),each())

初探jQuery($(),attr(),css(),val(),html(),text(),each())

培(信仰)
培(信仰)原创
2021年02月01日 14:54:57579浏览

初探jQuery

jQuery是什么

jQuery 是一个 JavaScript 库。jQuery 极大地简化了 JavaScript 编程。

使用jQuery 需要先进入jQuery文件。
有两种方式:

  1. 从官网下载后,通过script src属性加载

  2. 通过CDN加载

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

$():工厂函数

$():工厂函数,是全局函数,同时也是jQuery的别名,如果 $ 被占用可以用jQuery来操作。
$:也是构造函数,用来创建jQuery实例
jQuery对象:$()函数的返回值

  1. $("body").css("background","blue");
  2. jQuery("body").css("background","blue");

$():接收4种类型的参数

  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. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  8. <style>
  9. /* #first li:last-of-type {
  10. } */
  11. </style>
  12. <script>
  13. // $(function(){
  14. // $("<li>这是回调函数生成的</li>").appendTo($("#first"));
  15. // })
  16. $(()=>$("<li>这是回调函数生成的</li>").appendTo($("#first")))
  17. </script>
  18. </head>
  19. <body>
  20. <ul id="first">
  21. <li>item1</li>
  22. <li>item2</li>
  23. <li>item3</li>
  24. </ul>
  25. <ul id="second">
  26. <li>item1</li>
  27. <li>item2</li>
  28. <li>item3</li>
  29. </ul>
  30. <script>
  31. //接收4种类型的参数
  32. // 1. $(selector,context):获取元素
  33. //原生
  34. //document.querySelectorAll("li").forEach(li => (li.style.color="red"));
  35. //jQuery
  36. // $("li").css("background","blue");
  37. $("li").css("color", "red");
  38. $("li", "#first").css("color", "blue");
  39. $("#first li").css("background", "green");
  40. //$("li","#first") === $("#first li") //并列写时,#first必须写在前面
  41. // 2. $(js对象):jQuery包装器,js对象是原生的js对象,将原生的js对象转为jQuery对象
  42. // 因为想使用jQuery对象上的非常丰富的方法或属性
  43. document.body.style.backgroundColor = "yellow";
  44. // 想用jQuery中的css方法来设置style属性(内联样式)
  45. $(document.body).css("background", "lightgreen");
  46. // 将jQuery对象还原成原生的js对象
  47. // console.log($(document.querySelectorAll("li")));
  48. // ...spread 扩展,...rest归并
  49. console.log([...$(document.querySelectorAll("li"))]);
  50. // [...$(document.querySelectorAll("li"))].forEach(
  51. // (li) => (li.style.backgroundColor = skyblue)
  52. // );
  53. // [...$(document.querySelectorAll("li"))].forEach(
  54. // (li) => (li.style.color = "skyblue")
  55. // );
  56. console.log($(document.querySelectorAll("li")).get(2));
  57. //get(n),[n] 可以获取jQuery集合中的第n个元素,返回原生对象
  58. $(document.querySelectorAll("li")).get(2).style.color = "yellow";
  59. $(document.querySelectorAll("li"))[1].style.color = "skyblue";
  60. // 3. $(html文本):生成dom元素
  61. // document.body.insertAdjacentHTML("afterend","<li>这是一个增加项</li>")
  62. document
  63. .querySelector("#first")
  64. .insertAdjacentHTML("beforeend", "<li>这是js生成的一个增加项</li>");
  65. // $("<li>这是jQuery生成的一个增加项</li>").appendTo(document.querySelector("#first"));
  66. $("<li>这也是jQuery生成的一个增加项</li>").appendTo($("#first"));
  67. // 4. $(callback回调函数):传一个回调函数当参数,当页面加载完成后会自动调用它
  68. //$() :参数的四种类型
  69. // 1. CSS选择器
  70. // 2. 原生js对象(包装器的功能)
  71. // 3. html字符串,创建dom元素
  72. // 4. 回调函数,在页面加载完成后,dom树创建成功后自动调用
  73. </script>
  74. </body>
  75. </html>

演示效果如图。
效果图

重要术语

  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. </head>
  8. <body>
  9. <!-- <script>
  10. function User(name,email) {
  11. this.name = name;
  12. this.email = email;
  13. this.get= function (){
  14. return this.name + ':'+this.email;
  15. };
  16. }
  17. User.prototype.hello = function (name) {
  18. return 'Hello ' + name;
  19. }
  20. User.say = function () {
  21. return ' static function ';
  22. }
  23. const obj = new User("admin","a@php.cn");
  24. //实例方法
  25. console.log(obj.get());
  26. //原型方法
  27. console.log(obj.hello('percy'));
  28. //类方法
  29. console.log(User.say());
  30. </script> -->
  31. <ul>
  32. <li>item1</li>
  33. <li>item2</li>
  34. <li>item3</li>
  35. <li>item4</li>
  36. <li>item5</li>
  37. </ul>
  38. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  39. <script>
  40. //页面中所有元素,只要经过$()包装,一定返回的是jQuery对象
  41. console.log($("*") instanceof jQuery);
  42. //只有jQuery对象才可以调用定义在jQuery上的方法。
  43. //静态方法,直接使用jQuery调用,jQuery想象成构造函数
  44. //function jQuery(){}
  45. // $.each($('li'),(key, item)=> console.log(key, item.textContent));
  46. // document.querySelectorAll('li').forEach((item,key)=>console.log(key,item.textContent));
  47. // $.each($('li'),(key, item)=>item.style.color = 'yellow');
  48. $.each($('li'),(key, item)=> $(item).css('color' , 'blue'));
  49. $.each($('li'),(key, item)=> $(item).css('border' , '1px solid red'));
  50. </script>
  51. </body>
  52. </html>

注意:一定要分别 原生的forEach(需要遍历的对象,callback(item,key)),和jQuery的each(需要遍历的对象,callback(key,item))参数的顺序不同。

第一组 getter/setter attr()

  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>getter/setter1</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. body {
  14. display:flex;
  15. flex-direction: column;
  16. align-items: center;
  17. color:#666;
  18. }
  19. form {
  20. width: 400px;
  21. padding: 20px 10px;
  22. border:1px solid #aaa;
  23. box-shadow:0 0 5px #888;
  24. background-color: #eee;
  25. display:grid;
  26. grid-template-columns:80px 200px;
  27. gap:10px;
  28. place-content: center center;
  29. }
  30. button {
  31. grid-column: 2 / 3;
  32. height: 26px;
  33. }
  34. button:hover {
  35. color: white;
  36. background-color: #888;
  37. border:none;
  38. cursor:pointer;
  39. }
  40. .red {
  41. color:red;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <h2 class="red">用户登录</h2>
  47. <form action="handle.php" method="get">
  48. <label for="email">Email</label>
  49. <input
  50. type="email"
  51. name="email"
  52. id="emial"
  53. autofocus
  54. value="leture@php.cn"
  55. />
  56. <label for="password">Password</label>
  57. <input type="text" name="password" id="password" value="不少于6位" />
  58. <label for="confirm">记住我</label>
  59. <div>
  60. <input type="radio" name="save" id="confirm" value="1" checked />
  61. <label for="confirm">记住</label>
  62. <input type="radio" name="save" id="cancel" value="0" />
  63. <label for="cancel">放弃</label>
  64. </div>
  65. <button>登录</button>
  66. </form>
  67. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  68. <script>
  69. //attr():获取/设置元素属性
  70. //attr(name):getter
  71. //attr(name,value):setter
  72. const form = $("form");
  73. //action = "handle.php"
  74. console.log(form.attr("action"));
  75. form.attr("action","admin/check.php");
  76. console.log(form.attr("action"));
  77. //第一个参数通常是获取需要的属性,第二个参数使用回调
  78. form.attr("action",()=>{
  79. let method = form.attr('method').toUpperCase();
  80. return method === 'GET' ? 'query.php?id=2' : 'register.php';
  81. });
  82. console.log(form.attr("action"));
  83. </script>
  84. </body>
  85. </html>

第二组 getter/setter css()

  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>getter/setter2</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. body {
  14. display: flex;
  15. flex-direction: column;
  16. align-items: center;
  17. color: #666;
  18. }
  19. form {
  20. width: 400px;
  21. padding: 20px 10px;
  22. border: 1px solid #aaa;
  23. box-shadow: 0 0 5px #888;
  24. background-color: #eee;
  25. display: grid;
  26. grid-template-columns: 80px 200px;
  27. gap: 10px;
  28. place-content: center center;
  29. }
  30. button {
  31. grid-column: 2 / 3;
  32. height: 26px;
  33. }
  34. button:hover {
  35. color: white;
  36. background-color: #888;
  37. border: none;
  38. cursor: pointer;
  39. }
  40. .red {
  41. color: red;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <h2 class="red">用户登录</h2>
  47. <form action="handle.php" method="get">
  48. <label for="email">Email</label>
  49. <input
  50. type="email"
  51. name="email"
  52. id="emial"
  53. autofocus
  54. value="leture@php.cn"
  55. />
  56. <label for="password">Password</label>
  57. <input type="text" name="password" id="password" value="不少于6位" />
  58. <label for="confirm">记住我</label>
  59. <div>
  60. <input type="radio" name="save" id="confirm" value="1" checked />
  61. <label for="confirm">记住</label>
  62. <input type="radio" name="save" id="cancel" value="0" />
  63. <label for="cancel">放弃</label>
  64. </div>
  65. <button>登录</button>
  66. </form>
  67. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  68. <script>
  69. //css():设置元素的行内样式
  70. //css(name):获取getter
  71. //css(name,value):setter;
  72. //css(name,callback):支持回调函数
  73. const form = $("form");
  74. //使用style只能获取到style属性上的行内/内联样式
  75. //css样式表的样式是拿不到的,必须使用计算样式才可以
  76. // console.log(document.querySelector("form").style.width);
  77. // console.log(window.getComputedStyle(document.querySelector("form"),null).getPropertyValue("width"));
  78. // jQuery 可以直接就拿到元素的最终的计算样式
  79. // console.log(form.css("width"));
  80. form.css("border-top", "6px solid blue");
  81. //css(obj):接收对象
  82. form.css({
  83. "border-bottom": "3px solid skyblue",
  84. "background-color": "lightcyan",
  85. });
  86. //css(属性或者对象,callback): 第二个参数支持回调函数
  87. form.css("background-color",()=>{
  88. const colors = ['plum','lightblue','lime','red'];
  89. const i = Math.floor(Math.random()*colors.length);
  90. return colors[i];
  91. })
  92. </script>
  93. </body>
  94. </html>

第三组 getter/setter val()

  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>getter/setter3</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. body {
  14. display: flex;
  15. flex-direction: column;
  16. align-items: center;
  17. color: #666;
  18. }
  19. form {
  20. width: 400px;
  21. padding: 20px 10px;
  22. border: 1px solid #aaa;
  23. box-shadow: 0 0 5px #888;
  24. background-color: #eee;
  25. display: grid;
  26. grid-template-columns: 80px 200px;
  27. gap: 10px;
  28. place-content: center center;
  29. }
  30. button {
  31. grid-column: 2 / 3;
  32. height: 26px;
  33. }
  34. button:hover {
  35. color: white;
  36. background-color: #888;
  37. border: none;
  38. cursor: pointer;
  39. }
  40. .red {
  41. color: red;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <h2 class="red">用户登录</h2>
  47. <form action="handle.php" method="get" id="login">
  48. <label for="email">Email</label>
  49. <input
  50. type="email"
  51. name="email"
  52. id="email"
  53. autofocus
  54. value="leture@php.cn"
  55. />
  56. <label for="password">Password</label>
  57. <input type="password" name="password" id="password" value="不少于6位" />
  58. <label for="confirm">记住我</label>
  59. <div>
  60. <input type="radio" name="save" id="confirm" value="1" checked />
  61. <label for="confirm">记住</label>
  62. <input type="radio" name="save" id="cancel" value="0" />
  63. <label for="cancel">放弃</label>
  64. </div>
  65. <button>登录</button>
  66. </form>
  67. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  68. <script>
  69. // val():元素的值,表单控件的value属性
  70. console.log(document.forms["login"].email.value);
  71. console.log(document.forms.login.email.value);
  72. //jQuery
  73. console.log($("#email")[0].value);
  74. console.log($("#email").get(0).value);
  75. console.log($("#email").val());
  76. $("#email").val("admin@php.cn")
  77. console.log($("#email").val());
  78. console.log($("input:password").val());
  79. console.log($('input:radio[name="save"]:checked').val());
  80. console.log($('input:radio:checked').val());
  81. //val(callback):也支持回调函数
  82. $("email").val(()=> "xxx@qq.com");
  83. </script>
  84. </body>
  85. </html>

第四组 getter/setter 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. <title>getter/setter4</title>
  7. <style>
  8. * {
  9. padding: 0;
  10. margin: 0;
  11. box-sizing: border-box;
  12. }
  13. body {
  14. display: flex;
  15. flex-direction: column;
  16. align-items: center;
  17. color: #666;
  18. }
  19. form {
  20. width: 400px;
  21. padding: 20px 10px;
  22. border: 1px solid #aaa;
  23. box-shadow: 0 0 5px #888;
  24. background-color: #eee;
  25. display: grid;
  26. grid-template-columns: 80px 200px;
  27. gap: 10px;
  28. place-content: center center;
  29. }
  30. button {
  31. grid-column: 2 / 3;
  32. height: 26px;
  33. }
  34. button:hover {
  35. color: white;
  36. background-color: #888;
  37. border: none;
  38. cursor: pointer;
  39. }
  40. .red {
  41. color: red;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <h2 class="red">用户<em style="color:green">登录</em> </h2>
  47. <form action="handle.php" method="get" id="login">
  48. <label for="email">Email</label>
  49. <input
  50. type="email"
  51. name="email"
  52. id="email"
  53. autofocus
  54. value="leture@php.cn"
  55. />
  56. <label for="password">Password</label>
  57. <input type="password" name="password" id="password" value="不少于6位" />
  58. <label for="confirm">记住我</label>
  59. <div>
  60. <input type="radio" name="save" id="confirm" value="1" checked />
  61. <label for="confirm">记住</label>
  62. <input type="radio" name="save" id="cancel" value="0" />
  63. <label for="cancel">放弃</label>
  64. </div>
  65. <button>登录</button>
  66. </form>
  67. <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
  68. <script>
  69. //html() :对应原生innerHTML
  70. //text() :对应原生innerText / textContent
  71. // const h2= document.querySelector("h2").innerHTML;
  72. // const h2= document.querySelector("h2").textContent;
  73. // console.log(h2);
  74. // console.log(document.querySelector("h2").innerHTML);
  75. //jQuery
  76. // 只获取纯文本
  77. // console.log($("h2").text());
  78. // 带有html的文本
  79. // console.log($("h2").html());
  80. $($("<h2><em>这是新增加的H2</em></h2>")).appendTo($("body"));
  81. </script>
  82. </body>
  83. </html>

总结:attr(),css(),val()
三个方法,一个参数时是获取,两个参数时是设置,第二个参数支持回调。这样就很强大。

html() :对应原生innerHTML
text() :对应原生innerText / textContent

原生forEach() 与 jQuery 的 each() 的区别

需要特别注意的是:要想使用jQuery的属性和方法,必须转为jQuery对象,哪怕只是原生js加$()包装器。另外当$被占用是可以使用 jQuery() 代替 $()

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