Day 56 jquery
一 、事件委托实例
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <title>事件委托示例</title> </head> <body> <input type="button" value="添加新数据" id="add"> <table border="1"> <thead> <tr> <th>#</th> <th>姓名</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>金老板</td> <td><input type="button" value="删除" class="delete"></td> </tr> <tr> <td>2</td> <td>景女神</td> <td><input type="button" value="删除" class="delete"></td> </tr> <tr> <td>3</td> <td>隔壁老王</td> <td><input type="button" value="删除" class="delete"></td> </tr> </tbody> </table> <script src="jquery-3.3.1.js"></script> <script> // 点击添加按钮添加一条新数据 // 1. 找到按钮绑定点击事件 $("#add").on("click", function () { // 当添加按钮被点击之后要做的事儿 // 1. 创建一个新的tr var trEle = document.createElement("tr"); trEle.innerHTML = '<td>4</td> <td>哪吒</td> <td><input type="button" value="删除" class="delete"></td>'; // 2. 把创建好的tr追加到tbody里面 $("tbody").append(trEle); }); // 点击每一行的删除按钮,把当前行删除掉 // 1. 找到每一行的删除按钮,绑定点击事件 $("table").on("click", "input.delete", function () { // 给table标签绑定事件,监听我子子孙孙里面有delete样式类的标签如果被点击了,我就做下面的事儿 // 当每一行的删除按钮被点击后要做的事儿 // 1. 删除当前被点击的按钮的这一行 console.log(this); $(this).parent().parent().remove(); }) </script> </body> </html>
二 、hover事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>hover示例</title>
<style>
* {
margin: 0;
padding: 0;
}
.nav {
height: 40px;
width: 100%;
background-color: #3d3d3d;
position: fixed;
top: 0;
}
.nav ul {
list-style-type: none;
line-height: 40px;
}
.nav li {
float: left;
padding: 0 10px;
color: #999999;
position: relative;
}
.nav li:hover {
background-color: #0f0f0f;
color: white;
}
.clearfix:after {
content: "";
display: block;
clear: both;
}
.son {
position: absolute;
top: 40px;
left: 0;
height: 50px;
width: 100px;
background-color: #00a9ff;
display: none;
}
.hover .son {
display: block;
}
</style>
</head>
<body>
<div class="nav">
<ul class="clearfix">
<li>登录</li>
<li>注册</li>
<li class="hover">购物车
<p class="son">
空空如也...
</p>
</li>
</ul>
</div>
<script src="jquery-3.3.1.js"></script>
<script>
$(".nav li").hover(
function () {
// 鼠标移上去
$(this).addClass("hover");
},
// 鼠标移走
function () {
$(this).removeClass("hover");
}
)
</script>
</body>
</html>
三、keydown和keyup事件组合示例:
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="x-ua-compatible" content="IE=edge"> <title> 按住shift批量操作</title> </head> <body> <table border="1"> <thead> <tr> <th>#</th> <th>姓名</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td><input type="checkbox"></td> <td>Egon</td> <td> <select> <option value="1">上线</option> <option value="2">下线</option> <option value="3">停职</option> </select> </td> </tr> <tr> <td><input type="checkbox"></td> <td>Alex</td> <td> <select> <option value="1">上线</option> <option value="2">下线</option> <option value="3">停职</option> </select> </td> </tr> <tr> <td><input type="checkbox"></td> <td>Yuan</td> <td> <select> <option value="1">上线</option> <option value="2">下线</option> <option value="3">停职</option> </select> </td> </tr> <tr> <td><input type="checkbox"></td> <td>EvaJ</td> <td> <select> <option value="1">上线</option> <option value="2">下线</option> <option value="3">停职</option> </select> </td> </tr> <tr> <td><input type="checkbox"></td> <td>Gold</td> <td> <select> <option value="1">上线</option> <option value="2">下线</option> <option value="3">停职</option> </select> </td> </tr> </tbody> </table> <script src="jquery-3.3.1.js"></script> <script> // 定义一个全局的变量,保存shift有没有被按下的状态 var flag = false; // 给window绑定按键被按下的事件 $(window).on("keydown", function (e) { console.log(e.keyCode); if (e.keyCode === 16){ // 表示shift被按下!!! flag = true; } }); // 给window绑定按键被抬起的事件 $(window).on("keyup", function (e) { if (e.keyCode === 16){ // 表示shift被按下!!! flag = false; } }); // select标签的值发生变化之后,触发事件 $("select").on("change", function () { // 1. 判断shift有没有被按下 // 2. 判断当前行有没有被选中 var isChecked = $(this).parent().parent().find(":checkbox").prop("checked"); if (flag && isChecked) { // 按下就进入批量编辑模式 // 1. 取到select变化之后的值 var value = $(this).val(); // 2. 找到所有的选中的checkbox,把对应的select设置成上面能取到的值 $("input:checked").parent().parent().find("select").val(value); } // 没有被按下,啥都不做 }) </script> </body> </html>