• 第八篇 (2)jQuery


    jQuery是一个javascript库,核心理念是write less,do more(写得更少,做得更多),他内部帮我们把几乎所有功能都做了封装,相比上一节基于DOM、BOM操作会更加简单。例如:

    1. // DOM根据ID选择标签对象
    2. document.getElementById("xx")
    3. // jQuery根据ID选择标签对象
    4. $('#xx')

    jQuery封装了非常多的功能,我们课程会结合案例将最常用的功能做详细讲解。

     jQuery

    前戏

    1. 快速应用

    在使用jQuery时,需要提前下载并应用jQuery之后,才能在代码中使用。

     

    • 应用jQuery

      1. <!DOCTYPE html>
      2. <html>
      3. <head>
      4. <metacharset='utf-8'/>
      5. <title>jQuery</title>
      6. </head>
      7. <body>
      8. <divclass="body">
      9. <ul>
      10. <liid="login">登录</li>
      11. <liid="register">注册</li>
      12. </ul>
      13. </div>
      14. <!--引入jQuery-->
      15. <scripttype="text/javascript"src="js/jquery-3.4.1.min.js"></script>
      16. <script>
      17. // 利用jQuery提供的功能获取标签文本
      18. var value = $('#login').text();
      19. console.log(value);
      20. </script>
      21. </body>
      22. </html>

    2. DOM对象和jQuery对象

    DOM对象和jQuery对象都为标签提供了各种各种功能,并且两者之间可以进行相互转换。

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <metacharset='utf-8'/>
    5. <title>jQuery</title>
    6. </head>
    7. <body>
    8. <divid="content">人生如烟,烟如雾。</div>
    9. <!--引入jQuery-->
    10. <scriptsrc="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    11. <script>
    12. // DOM操作
    13. // 获取文本
    14. var txt = document.getElementById('content').innerText;
    15. document.getElementById('content').innerText ='沙雕';
    16. // jQuery操作
    17. var text = $('#content').text();
    18. $('#content').text('二货');
    19. // Dom对象转换jQuery对象:$(dom对象)
    20. $(document.getElementById('content'))
    21. // jQuery对象转换成Dom对象:jQuery对象[0]
    22. $('#content')[0]
    23. </script>
    24. </body>
    25. </html>

    5.1 选择器

    jQuery提供了大量选择器,用于帮助开发者快速找到HTML中的指定标签。

    5.1.1 id 选择器

    HTML代码:

    1. <divid="notMe">
    2. <p>id="notMe"</p>
    3. </div>
    4. <divid="myDiv">白日依山尽</div>

    jQuery代码:

    1. $("#myDiv");

    结果:

    1. [<div id="myDiv">id="myDiv"</div>]

    5.1.2 class 选择器

    HTML代码:

    1. <divclass="notMe">窗前明月光</div>
    2. <divclass="myClass">疑是地上霜</div>
    3. <spanclass="myClass">举头望明月</span>

    jQuery代码:

    1. $(".myClass");

    结果:

    1. [<div class="myClass">窗前明月光</div>, <span class="myClass">举头望明月</span>]

    5.1.3 标签选择器

    HTML代码:

    1. <div>DIV1</div>
    2. <div>DIV2</div>
    3. <span>SPAN</span>

    jQuery代码:

    1. $("div");

    结果:

    1. [<div>DIV1</div>, <div>DIV2</div>]

    5.1.4 多选择器

    HTML代码:

    1. <div></div>
    2. <pclass="myClass">我顶你个肺</p>
    3. <span>你太美</span>
    4. <pclass="notMyClass">哈哈哈哈哈哈</p>

    jQuery代码:

    1. $("div,span,p.myClass")

    结果:

    1. [<div>鸡</div>, <p class="myClass">我顶你个肺</p>,<span>你太美</span>]

    5.1.5 层级选择器

    HTML代码:

    1. <form>
    2. <label>Name:</label>
    3. <inputname="name"/>
    4. <div>
    5. <label>Newsletter:</label>
    6. <inputname="newsletter"/>
    7. </div>
    8. </form>
    9. <inputname="none"/>

    jQuery代码:

    1. $("form input")

    结果:

    1. [<input name="name"/>,<input name="newsletter"/>]

    5.1.6 属性选择器

    HTML代码:

    1. <inputtype="checkbox"name="newsletter"value="Hot Fuzz"/>
    2. <inputtype="checkbox"name="newsletter"value="Cold Fusion"/>
    3. <inputtype="checkbox"name="accept"value="Evil Plans"/>

    jQuery代码:

    1. $("input[name='newsletter']")

    结果:

    1. [<input type="checkbox" name="newsletter" value="Hot Fuzz"/>,<input type="checkbox" name="newsletter" value="Cold Fusion"/>]

    5.1.7 表单选择器

    HTML代码:

    1. <form>
    2. <inputtype="button"value="Input Button"/>
    3. <inputtype="checkbox"/>
    4. <inputtype="file"/>
    5. <inputtype="hidden"/>
    6. <inputtype="image"/>
    7. <inputtype="password"/>
    8. <inputtype="radio"/>
    9. <inputtype="reset"/>
    10. <inputtype="submit"/>
    11. <inputtype="text"/>
    12. <select>
    13. <option>Option</option>
    14. </select>
    15. <textarea></textarea>
    16. <button>Button</button>
    17. </form>

    jQuery代码:

    1. $(":text")// 找到所有input标签
    2. // $(":input") 找到所有input标签
    3. // $(":password") 找到所有input且type=password的标签
    4. // $(":radio") 找到所有input且type=radio的标签
    5. // $(":checkbox") 找到所有input且type=checkbox的标签

    结果:

    1. [<input type="text"/>]

    5.2 筛选器

    筛选器一般用于对选择器选中的标签进行再次筛选。

    5.2.1 parent 父标签

    HTML代码:

    1. <div><p>Hello</p><p>Hello</p></div>

    jQuery代码:

    1. $("p").parent()

    结果:

    1. [<div><p>Hello</p><p>Hello</p></div>]

    5.2.2 children 所有子标签

    HTML代码:

    1. <p>Hello</p><div><span>Hello Again</span></div><p>And Again</p>

    jQuery代码:

    1. $("div").children()

    结果:

    1. [<span>HelloAgain</span>]

    5.2.3 next 下一个兄弟标签

    HTML代码:

    1. <p>Hello</p><p>Hello Again</p><div><span>And Again</span></div>

    jQuery代码:

    1. $("p").next()

    结果:

    1. [<p>HelloAgain</p>, <div><span>And Again</span></div>]

    5.2.4 prev 上一个兄弟标签

    HTML代码:

    1. <p>Hello</p><div><span>Hello Again</span></div><p>And Again</p>

    jQuery代码:

    1. $("p").prev()

    结果:

    1. [<div><span>HelloAgain</span></div>]

    5.3.5 siblings 所有兄弟标签

    HTML代码:

    1. <p>Hello</p><div><span>Hello Again</span></div><p>And Again</p>

    jQuery代码:

    1. $("div").siblings()

    结果:

    1. [<p>Hello</p>, <p>And Again</p>]

    5.3.6 find 子孙中查找标签

    HTML代码:

    1. <p><span>Hello</span>, how are you?</p>

    jQuery代码:

    1. $("p").find("span")

    结果:

    1. [<span>Hello</span>]

    5.3.7 first 匹配的第一个标签

    HTML代码:

    1. <ul>
    2. <li>list item 1</li>
    3. <li>list item 2</li>
    4. <li>list item 3</li>
    5. <li>list item 4</li>
    6. <li>list item 5</li>
    7. </ul>

    jQuery代码:

    1. $('li').first()

    结果:

    1. [<li>list item 1</li>]

    5.3.8 last 匹配的最后一个标签

    HTML代码:

    1. <ul>
    2. <li>list item 1</li>
    3. <li>list item 2</li>
    4. <li>list item 3</li>
    5. <li>list item 4</li>
    6. <li>list item 5</li>
    7. </ul>

    jQuery代码:

    1. $('li').last()

    结果:

    1. [<li>list item 5</li>]

    5.3 属性

    5.3.1 addClass 添加样式

    HTML代码:

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>Title</title>
    6. <style>
    7. .c1{
    8. height:200px;
    9. width:200px;
    10. border-radius:50%;
    11. background-color: red;
    12. }
    13. .green{
    14. background-color: green;
    15. }
    16. </style>
    17. </head>
    18. <body>
    19. <divclass="c1"></div>
    20. </body>
    21. </html>

    jQuery代码:

    1. $('.c1').addClass('green')

    结果:

    1. div标签背景颜色变成了绿色

    5.3.2 removeClass 删除样式

    HTML代码:

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>Title</title>
    6. <style>
    7. .c1{
    8. height:200px;
    9. width:200px;
    10. border-radius:50%;
    11. background-color: red;
    12. }
    13. .green{
    14. background-color: green;
    15. }
    16. </style>
    17. </head>
    18. <body>
    19. <divclass="c1 green"></div>
    20. </body>
    21. </html>

    jQuery代码:

    1. $('.c1').removeClass('green')

    结果:

    1. div标签背景又变成了红色
    案例:加载框/Tab菜单切换

    5.3.3 html、text文本

    HTML代码:

    1. <divclass="a1">
    2. <ahref="">百度</a>
    3. </div>
    4. <divclass="a2"></div>

    jQuery代码:

    1. 取值:
    2. $('.a1').html()
    3. $('.a1').text()
    4. 设置值:
    5. $('.a2').html('<a href="">京东</a>')
    6. $('.a2').text('<a href="">京东</a>')

    结果:

    1. 取值结果:
    2. html:<a href="">百度</a>
    3. text:百度
    4. 设置值结果:
    5. html中的内容会生成一个标签
    6. text中的内容还是一个文本内容显示,不能识别成标签

    5.3.4 val 值

    HTML代码:

    1. <inputtype="text"id="username">
    2. <inputtype="text"class="a1"name="sex">
    3. <inputtype="text"class="a1"name="sex">
    4. <inputtype="text"class="a2"name="hobby">抽烟
    5. <inputtype="text"class="a2"name="hobby">喝酒
    6. <inputtype="text"class="a2"name="hobby">烫头
    7. <selectname="city"id="s1">
    8. <optionvalue="1">北京</option>
    9. <optionvalue="2">上海</option>
    10. <optionvalue="3">深圳</option>
    11. </select>
    12. <selectname="lover"id="s2">
    13. <optionvalue="1">波多</option>
    14. <optionvalue="2">苍井</option>
    15. <optionvalue="3">小泽</option>
    16. </select>

    jQuery代码:

    1. 获取值:
    2. 文本输入框:$('#username').val();
    3. 单选radio框:$('.a1:checked').val();
    4. 多选checkout框:$('.a2:checked').val()是不行的;需要循环取值,如下:
    5. var d = $(':checkbox:checked');
    6. for(var i=0;i<d.length;i++){
    7. console.log(d.eq(i).val());
    8. }
    9. 单选select框:$('#city').val();
    10. 多选select框:$('#lover').val();
    11. 设置值:
    12. 文本输入框:$('#username').val('you are my love');
    13. 单选radio框:$('.a1').val([2]);#注意里面必须是列表,写的是value属性对应的值
    14. 多选checkout框:$('.a2').val(['2','3'])
    15. 单选select框:$('#city').val('1');
    16. 多选select框:$('#lover').val(['2','3'])
    案例:模态框添加和编辑功能
    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>Title</title>
    6. <style>
    7. .cover {
    8. position:fixed;
    9. top:0;
    10. right:0;
    11. bottom:0;
    12. left:0;
    13. background-color: rgba(0,0,0,0.3);
    14. z-index:99;
    15. }
    16. .modal {
    17. width:300px;
    18. height:200px;
    19. background-color: white;
    20. position: absolute;
    21. top:50%;
    22. left:50%;
    23. margin-top:-100px;
    24. margin-left:-150px;
    25. z-index:1000;
    26. }
    27. .hide {
    28. display: none;
    29. }
    30. </style>
    31. </head>
    32. <body>
    33. <buttonid="add">新增</button>
    34. <tableborder="1">
    35. <thead>
    36. <tr>
    37. <th>#</th>
    38. <th>姓名</th>
    39. <th>爱好</th>
    40. <th>操作</th>
    41. </tr>
    42. </thead>
    43. <tbody>
    44. <tr>
    45. <td><inputtype="checkbox"></td>
    46. <td>金老板</td>
    47. <td>开车</td>
    48. <td>
    49. <buttonclass="fire">开除</button>
    50. </td>
    51. </tr>
    52. <tr>
    53. <td><inputtype="checkbox"></td>
    54. <td>景女神</td>
    55. <td>茶道</td>
    56. <td>
    57. <buttonclass="fire">开除</button>
    58. </td>
    59. </tr>
    60. <tr>
    61. <td><inputtype="checkbox"></td>
    62. <td>苑昊(苑局)</td>
    63. <td>不洗头、不翻车、不要脸</td>
    64. <td>
    65. <buttonclass="fire">开除</button>
    66. </td>
    67. </tr>
    68. </tbody>
    69. </table>
    70. <divclass="cover hide"></div>
    71. <divclass="modal hide">
    72. <div>
    73. <label>姓名:
    74. <inputtype="text"id="name">
    75. </label>
    76. </div>
    77. <div>
    78. <label>爱好:
    79. <inputtype="text"id="hobby">
    80. </label>
    81. </div>
    82. <buttonid="cancel"type="button">取消</button>
    83. <buttonid="submit"type="button">提交</button>
    84. </div>
    85. <scriptsrc="jquery.js"></script>
    86. <script>
    87. // 定义一个清空输入框并且隐藏模态框的方法
    88. function hideModal(){
    89. // 1. 清空input的值
    90. $("#name,#hobby").val('');
    91. // 2. 隐藏起来
    92. $(".cover,.modal").addClass('hide');
    93. }
    94. // 开除按钮的功能
    95. $("table").on('click','.fire',function(){//我们先去学冒泡事件、事件委托然后再回来学这个例子,事件里面都是用的匿名函数,这里用on是因为我
    96. //们要将新添加进来的每行里面的button标签能够继承这个点击删除的事件
    97. // 点击开除按钮要做的事儿
    98. // 把当前行移除掉
    99. //this --> 触发当前点击事件的DOM对象
    100. $(this).parent().parent().remove();// 链式操作
    101. });
    102. // 新增按钮的功能
    103. $("#add").click(function(){
    104. // 点击新增按钮要做的事儿
    105. // 1. 移除cover和modal的hide样式
    106. $(".cover,.modal").removeClass('hide');
    107. });
    108. // 点击modal中的cancel按钮
    109. $("#cancel").click(function(){
    110. hideModal();
    111. });
    112. // 点击modal中的submit按钮
    113. $("#submit").click(function(){
    114. // 1. 获取用户输入的值
    115. var name = $("#name").val();
    116. var hobby = $("#hobby").val();
    117. // 2. 隐藏模态框,清空输入框
    118. hideModal();
    119. // 3. 创建一个tr标签,把数据塞进去
    120. var trEle = document.createElement("tr");
    121. $(trEle).append('<td><input type="checkbox"></td>');
    122. $(trEle).append('<td>'+ name +'</td>');
    123. var tdTmp = document.createElement('td');
    124. tdTmp.innerText = hobby;
    125. $(trEle).append(tdTmp);
    126. $(trEle).append('<td><button class="fire">开除</button></td>')
    127. // 4. 把上一步的tr追加到表格的tbody后面
    128. $('tbody').append(trEle);
    129. });
    130. </script>
    131. </body>
    132. </html>

    5.3.4 prop 属性值

    HTML代码:

    1. <inputtype="checkbox"id="i1"value="1">

    jQuery代码:

    1. $("#i1").prop("checked")

    结果:

    1. false
    案例:表格全选、反选、取消
    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>Title</title>
    6. </head>
    7. <body>
    8. <buttonid="all">全选</button>
    9. <buttonid="reverse">反选</button>
    10. <buttonid="cancel">取消</button>
    11. <tableborder="1">
    12. <thead>
    13. <tr>
    14. <th>#</th>
    15. <th>姓名</th>
    16. <th>爱好</th>
    17. </tr>
    18. </thead>
    19. <tbody>
    20. <tr>
    21. <td><inputtype="checkbox"></td>
    22. <td>金老板</td>
    23. <td>开车</td>
    24. </tr>
    25. <tr>
    26. <td><inputtype="checkbox"></td>
    27. <td>景女神</td>
    28. <td>茶道</td>
    29. </tr>
    30. <tr>
    31. <td><inputtype="checkbox"></td>
    32. <td>苑昊(苑局)</td>
    33. <td>不洗头、不翻车、不要脸</td>
    34. </tr>
    35. </tbody>
    36. </table>
    37. <scriptsrc="jquery.js"></script>
    38. <script>
    39. // 点击全选按钮 选中所有的checkbox
    40. // DOM绑定事件方法
    41. // $("#all")[0].onclick = function(){}
    42. // jQuery绑定事件方法
    43. $("#all").click(function(){
    44. $(":checkbox").prop('checked',true);
    45. });
    46. // 取消
    47. $("#cancel").on("click",function(){
    48. $(":checkbox").prop('checked',false);
    49. });
    50. // 反选
    51. $("#reverse").click(function(){
    52. // 1. 找到所有选中的checkbox取消选中
    53. // $("input:checked").prop('checked', false);
    54. // 2. 找到没有选中的checkbox选中
    55. // $("input:not(:checked)").prop('checked', true);
    56. //你会发现上面这么写,不行,为什么呢?因为你做了第一步操作之后,再做第二步操作的时候,所有标签就已经全部取消选中了,所以第二步就把所有标签选中了
    57. // 方法:for循环所有的checkbox,挨个判断原来选中就取消选中,原来没选中就选中
    58. var $checkbox = $(":checkbox");
    59. for(var i=0;i<$checkbox.length;i++){
    60. // 获取原来的选中与否的状态
    61. var status = $($checkbox[i]).prop('checked');
    62. $($checkbox[i]).prop('checked',!status);
    63. }
    64. })
    65. </script>
    66. </body>
    67. </html>

    5.4 文档处理

    5.4.1 append 内部插入

    HTML代码:

    1. <divclass="d1">
    2. <span>波多</span>
    3. </div>

    jQuery代码:

    1. $('#d1').append('<a href="http://www.jd.com">京东</a>');

    结果:

    1. <divclass="d1">
    2. <span>波多</span>
    3. <ahref="http://www.jd.com">京东</a>
    4. </div>

    5.4.2 prepend 内部插入

    HTML代码:

    1. <divclass="d1">
    2. <span>波多</span>
    3. </div>

    jQuery代码:

    1. $('#d1').prepend('<a href="http://www.jd.com">京东</a>');

    结果:

    1. <divclass="d1">
    2. <ahref="http://www.jd.com">京东</a>
    3. <span>波多</span>
    4. </div>

    5.4.3 after 外部插入

    HTML代码:

    1. <divclass="d1">
    2. <span>波多</span>
    3. </div>

    jQuery代码:

    1. $('#d1').after('<a href="http://www.jd.com">京东</a>');

    结果:

    1. <divclass="d1">
    2. <span>波多</span>
    3. </div>
    4. <ahref="http://www.jd.com">京东</a>

    5.4.4 before 外部插入

    HTML代码:

    1. <divclass="d1">
    2. <span>波多</span>
    3. </div>

    jQuery代码:

    1. $('#d1').before('<a href="http://www.jd.com">京东</a>');

    结果:

    1. <ahref="http://www.jd.com">京东</a>
    2. <divclass="d1">
    3. <span>波多</span>
    4. </div>

    5.4.5 empty 删除标签内部的标签

    HTML代码:

    1. <divclass="d1">
    2. <span>波多</span>
    3. </div>

    jQuery代码:

    1. $('.c1').empty()

    结果:

    1. <divclass="d1">
    2. </div>

    5.4.6 remove 删除标签

    HTML代码:

    1. <divclass="d1">
    2. <span>波多</span>
    3. </div>
    4. <div>你好</div>

    jQuery代码:

    1. $('.c1').remove()

    结果:

    1. <div>你好</div>
    案例:表格数据删除
    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>Title</title>
    6. <style>
    7. .cover {
    8. position:fixed;
    9. top:0;
    10. right:0;
    11. bottom:0;
    12. left:0;
    13. background-color: rgba(0,0,0,0.3);
    14. z-index:99;
    15. }
    16. .modal {
    17. width:300px;
    18. height:200px;
    19. background-color: white;
    20. position: absolute;
    21. top:50%;
    22. left:50%;
    23. margin-top:-100px;
    24. margin-left:-150px;
    25. z-index:1000;
    26. }
    27. .hide {
    28. display: none;
    29. }
    30. </style>
    31. </head>
    32. <body>
    33. <buttonid="add">新增</button>
    34. <tableborder="1">
    35. <thead>
    36. <tr>
    37. <th>#</th>
    38. <th>姓名</th>
    39. <th>爱好</th>
    40. <th>操作</th>
    41. </tr>
    42. </thead>
    43. <tbody>
    44. <tr>
    45. <td><inputtype="checkbox"></td>
    46. <td>金老板</td>
    47. <td>开车</td>
    48. <td>
    49. <buttonclass="fire">开除</button>
    50. </td>
    51. </tr>
    52. <tr>
    53. <td><inputtype="checkbox"></td>
    54. <td>景女神</td>
    55. <td>茶道</td>
    56. <td>
    57. <buttonclass="fire">开除</button>
    58. </td>
    59. </tr>
    60. <tr>
    61. <td><inputtype="checkbox"></td>
    62. <td>苑昊(苑局)</td>
    63. <td>不洗头、不翻车、不要脸</td>
    64. <td>
    65. <buttonclass="fire">开除</button>
    66. </td>
    67. </tr>
    68. </tbody>
    69. </table>
    70. <divclass="cover hide"></div>
    71. <divclass="modal hide">
    72. <div>
    73. <label>姓名:
    74. <inputtype="text"id="name">
    75. </label>
    76. </div>
    77. <div>
    78. <label>爱好:
    79. <inputtype="text"id="hobby">
    80. </label>
    81. </div>
    82. <buttonid="cancel"type="button">取消</button>
    83. <buttonid="submit"type="button">提交</button>
    84. </div>
    85. <scriptsrc="jquery.js"></script>
    86. <script>
    87. // 开除按钮的功能
    88. $("table").on('click',function(){
    89. // 把当前行移除掉
    90. //this --> 触发当前点击事件的DOM对象
    91. $(this).parent().parent().remove();// 链式操作
    92. });
    93. </script>
    94. </body>
    95. </html>

    5.5 事件

    jQuery中也可以为标签进行绑定事件,并且相比于DOM会更加方便。

    5.5.1 jQuery绑定事件

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>jQuery学习</title>
    6. </head>
    7. <body>
    8. <ul>
    9. <li>王宝强</li>
    10. <li>陈羽凡</li>
    11. <li>谢霆锋</li>
    12. </ul>
    13. <scripttype="text/javascript">
    14. // 当页面框架加载完成之后(DOM结构),执行内部代码。
    15. $(function(){
    16. // 通过选择器找到指定标签
    17. $('li').onclick(function(){
    18. // 触发事件时,都会执行此匿名函数。 $(this)代表当前触发的标签。
    19. })
    20. })
    21. </script>
    22. </body>
    23. </html>
    案例:左侧菜单实现
    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>JQuery学习</title>
    6. <style>
    7. body {
    8. margin:0;
    9. }
    10. .header {
    11. height:48px;
    12. background-color:#499ef3;
    13. }
    14. .body .menu {
    15. position:fixed;
    16. top:48px;
    17. left:0;
    18. bottom:0;
    19. width:220px;
    20. border-right:1px solid #dddddd;
    21. overflow: scroll;
    22. }
    23. .body .content {
    24. position:fixed;
    25. top:48px;
    26. right:0;
    27. bottom:0;
    28. left:225px;
    29. /* 超出范围的话,出现滚轮 */
    30. overflow: scroll;
    31. }
    32. .body .menu .title {
    33. padding:8px;
    34. border-bottom:1px solid #dddddd;
    35. background-color:#5f4687;
    36. color: white;
    37. }
    38. .body .menu .child {
    39. border-bottom:1px solid #dddddd;
    40. }
    41. .body .menu .child a {
    42. display: block;
    43. padding:5px10px;
    44. color: black;
    45. text-decoration: none;
    46. }
    47. .body .menu .child a:hover {
    48. background-color:#dddddd;
    49. }
    50. .hide {
    51. display: none;
    52. }
    53. </style>
    54. </head>
    55. <body>
    56. <divclass="header"></div>
    57. <divclass="body">
    58. <divclass="menu">
    59. <divclass="item">
    60. <divclass="title">国产</div>
    61. <divclass="child">
    62. <ahref="#">少年的你</a>
    63. <ahref="#">我不是药神</a>
    64. <ahref="#">我和我的祖国</a>
    65. </div>
    66. </div>
    67. <divclass="item">
    68. <divclass="title">欧美</div>
    69. <divclass="child hide ">
    70. <ahref="#">战争之王</a>
    71. <ahref="#">华尔街之狼</a>
    72. <ahref="#">聚焦</a>
    73. </div>
    74. </div>
    75. <divclass="item">
    76. <divclass="title">韩国</div>
    77. <divclass="child hide">
    78. <ahref="#">坏家伙们</a>
    79. <ahref="#">寄生虫</a>
    80. <ahref="#">燃烧</a>
    81. </div>
    82. </div>
    83. </div>
    84. <divclass="content"></div>
    85. </div>
    86. <scripttype="text/javascript">
    87. $(function(){
    88. // 给所有样式有 title 的标签绑定事件
    89. $('.title').click(function(){
    90. // 当前触发事件的标签
    91. $(this).next().removeClass('hide');
    92. $(this).parent().siblings().find('.title').addClass('hide');
    93. })
    94. })
    95. </script>
    96. </body>
    97. </html>

    jQuery有很多事件,使用方法和click都是类似的,事件列表如下:

    5.5.2 jQuery事件委托

    jQuery的事件绑定是在页面加载完毕之后,找到相关标签并为其绑定事件,如果后期通过js代码有新增表现,那么新标签中模式是没有事件的,如:

    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>jQuery学习</title>
    6. </head>
    7. <body>
    8. <inputtype="button"id="btn"value="添加元素">
    9. <ulid="greenBoy">
    10. <li>王宝强</li>
    11. <li>陈羽凡</li>
    12. <li>谢霆锋</li>
    13. </ul>
    14. <scriptsrc="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    15. <scripttype="text/javascript">
    16. $(function(){
    17. $('li').click(function(){
    18. alert($(this).text());
    19. });
    20. $('#btn').click(function(){
    21. var tag = $('<li>');
    22. tag.text('alex');
    23. $('#greenBoy').append(tag);
    24. })
    25. })
    26. </script>
    27. </body>
    28. </html>

    为了避免类似这种情况的发生,jQuery中引入了事件委托的概念,只需要基于on进行绑定即可:

    1. <scripttype="text/javascript">
    2. $(function(){
    3. // on的第一个参数:事件名称
    4. // 第二个参数:选择器
    5. // 第三个参数:事件触发时执行的函数
    6. $('#greenBoy').on("click","li",function(){
    7. alert($(this).text());
    8. });
    9. $('#btn').click(function(){
    10. var tag = $('<li>');
    11. tag.text('alex');
    12. $('#greenBoy').append(tag);
    13. })
    14. })
    15. </script>

    5.6 Ajax

    ajax作用:通过JavaScript代码向网络上的地址发送异步请求。

    为了本地测试方便,我们通过ajax向本地json文件发送请求并获取数据。

    • 本地创建 data.json文件

      ```
      [
      {“id”:1,”name”:”武沛齐”,”age”:18},
      {“id”:2,”name”:”Alex”,”age”:18},
      {“id”:3,”name”:”吴老板”,”age”:18}
      ]

    1. -编写页面 index.html
    2. ```html
    3. <!DOCTYPE html>
    4. <html lang="en">
    5. <head>
    6. <meta charset="UTF-8">
    7. <title>jQuery学习</title>
    8. </head>
    9. <body>
    10. <input type="button" id="btn" value="获取数据">
    11. <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    12. <script type="text/javascript">
    13. $(function () {
    14. $('#btn').click(function () {
    15. $.ajax({
    16. type: 'GET',
    17. // 也可以向网络地址 http://www.xxxx.com 发送请求。
    18. url: 'data.json',
    19. success: function (arg) {
    20. console.log(arg);
    21. }
    22. })
    23. });
    24. })
    25. </script>
    26. </body>
    27. </html>
    案例:基于Ajax实现数据管理
    1. <!DOCTYPE html>
    2. <htmllang="en">
    3. <head>
    4. <metacharset="UTF-8">
    5. <title>jQuery学习</title>
    6. </head>
    7. <body>
    8. <tableborder="1">
    9. <thead>
    10. <tr>
    11. <th>id</th>
    12. <th>姓名</th>
    13. <th>年龄</th>
    14. </tr>
    15. </thead>
    16. <tbody>
    17. </tbody>
    18. </table>
    19. <inputtype="button"id="btn"value="获取数据">
    20. <scriptsrc="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    21. <scripttype="text/javascript">
    22. $(function(){
    23. $('#btn').click(function(){
    24. $.ajax({
    25. type:'GET',
    26. // 也可以向网络地址 http://www.xxxx.com 发送请求。
    27. url:'data.json',
    28. success:function(arg){
    29. console.log(arg);
    30. // 1 先制作出所有的tr标签
    31. var s ='';
    32. for(var i in arg){
    33. var a ='<tr><td>'+ arg[i]['id']+'</td><td>'+ arg[i]['name']+'</td><td>'+ arg[i]['age']+'</td></tr>';
    34. s += a;
    35. }
    36. // 2 找到tbody标签,将标签添加进去
    37. $('tbody').append(s);
    38. }
    39. })
    40. });
    41. })
    42. </script>
    43. </body>
    44. </html>

    4.4 今日作业

    整合jQuery所有知识点实现一个后台管理程序,功能必须包含:

    • 后台管理布局:左侧菜单、右侧内容。
    • 左侧菜单点击切换
    • 右侧展示数据表格(数据通过Ajax获取,之后再基于jQuery展示数据)
    • 对表格数据可以进行:增删改操作(用模态对话框实现)。
    作者:华王 博客:https://www.cnblogs.com/huahuawang/
  • 相关阅读:
    2018北美部分CS项目学费
    APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例
    浅谈MITM攻击之信息窃取(解密315晚会报道的免费WIFI窃取个人信息)
    APP接口自动化测试JAVA+TestNG(一)之框架环境搭建
    Android测试提升效率批处理脚本(二)
    Android APP压力测试(三)之Monkey日志自动分析脚本
    Android系统build.prop文件
    Android APP压力测试(二)之Monkey信息自动收集脚本
    Android APP压力测试(一)之Monkey工具介绍
    Android反编译(三)之重签名
  • 原文地址:https://www.cnblogs.com/huahuawang/p/14751700.html
Copyright © 2020-2023  润新知