python之JQuery(文档操作,事件委托,事件冒泡)
1. 文档操作 创建标签用:document.createElement("div") 1. 内部添加 1. 前面加 1. $(A).prepend(B) 2. $(A).prependTo(B) 2. 后面加 1. $(A).append(B) 2. $(B).appendTo(A) 2. 外部添加 1. 前面加 1. $(A).before(B) 2. $(B).insertBefore(A) 2. 后面加 1. $(A).after(B) 2. $(B).insertAfter(A) 3. 移除和清空 1. remove() --> 把选中过的标签从文档树中移除 2. empty() --> 把选中的标签内部的元素都移除 4. 替换 1. $(A).replaceWith(B) 2. $(B).replaceAll(A) 5. clone 注意参数true,加上true会把标签绑定的事件也复制 2. 事件 1. jQuery绑定事件的方式 1. 给标签绑定事件的方式 1. 在标签上写 onclick=函数(); 2. 在js代码中 标签对象.onclick = function(){} 2. jQuery绑定事件 1. $("选择器").click(function(){...}); 3. 事件委托(如把.c1样式类的事件委托给body标签(未来的事件)(因为body一直是存在的)) 原理:事件冒泡(即div下的span标签,如果事件寻找的是div标签,而点击span标签仍然有效的情况) 1.如何阻止事件冒泡(向上传递)(e为绑定事件的函数参数,下同) e.stopPropagation() 2.阻止默认事件的发生如(submit按钮有默认的事件,下面有例子)(常用于阻止form表单的提交) e.preventDefault() 3.阻止后续事件的执行 如在事件函数中添加return false; 目的:解决未来的标签如何绑定事件!(即如果原先有对应的标签对应的样式,但是后来新添加的标签就应用不上这个样式的情况) 语法: $("祖先标签").on("click", "选择器", function(){...}) #--利用委托给未来的标签绑定事件 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="content-Type" charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <title>Title</title> </head> <body> <button id="b1">添加</button> <table border="1"> <thead> <tr> <th>序号</th> <th>姓名</th> <th>爱好</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>康抻</td> <td>gay in gay out</td> <td><button class="delete">开除</button></td> </tr> <tr> <td>2</td> <td>蝇蝇</td> <td>用手</td> <td><button class="delete">开除</button></td> </tr> </tbody> </table> <script src="jquery-3.3.1.js"></script> <script> $("#b1").click(function () { // 在表格的最后添加一行数据 // 1. 先有数据 var trEle = document.createElement("tr"); // trEle是一个DOM对象 trEle.innerHTML = ` <td>3</td> <td>黄袍哥</td> <td>吹牛逼</td> <td><button class="delete">开除</button></td> `; // 2. 追加到tbody的最后 $("tbody").append(trEle); }); // 使用事件委托的方式给未来的标签绑定事件 $("table").on("click", ".delete", function () { // this指的就是谁触发的事件,this是一个DOM对象,$(this)是jQuery对象 console.log(this); $(this).parent().parent().remove(); }) </script> </body> </html> #--阻止事件的冒泡 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="content-Type" charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <title>Title</title> </head> <body> <div id="d1"> <p id="p1"> <span id="s1">span</span> </p> </div> <hr> <form action=""> <input type="text" id="i2"> <input type="submit" value="提交" id="i1"> </form> <script src="jquery-3.3.1.js"></script> <script> $("#s1").click(function (event) { // event表示事件本身 alert("这是span标签"); // 阻止事件冒泡 event.stopPropagation() }); $("#p1").click(function () { alert("这是p标签") }); $("#d1").click(function () { alert("这是div标签") }); // 点击submit按钮,先校验input框的值为不为空, // 为空就不提交,不为空就提交 $("#i1").click(function (event) { alert("这是form表单的提交按钮!"); var value = $("#i2").val(); if (value.length === 0){ // 为空就不提交 // 不执行后续默认的提交事件 // 阻止默认事件的执行 // event.preventDefault() return false; } }); </script> </body> </html>