本文主要是介绍jquery-事件、动画效果、each、.data()、表格增删改,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
-
- 事件
- 动画效果
- each
- data
- 实现表格的增删改
-
事件
常用事件
click(function(){...})
hover(function(){...})
blur(function(){...})
focus(function(){...})
change(function(){...})
keyup(function(){...})
事件绑定
.on( events [, selector ],function(){})events: 事件selector: 选择器(可选的)function: 事件处理函数
移除事件
.off( events [, selector ][,function(){}])off() 方法移除用[ .on()绑定的事件处理程序。events: 事件selector: 选择器(可选的)function: 事件处理函数
事件委托
事件委托是通过事件冒泡的原理,利用父标签去触发子标签的事件。
示例:
表格中每一行的编辑和删除按钮。
// 事件委托的方式$("tbody").on("click", ".delete", function () {// this 当前点击的标签// 删除当前行$(this).parent().parent().remove();})
动画效果
// 基本
show([s,[e],[fn]])
hide([s,[e],[fn]])
toggle([s],[e],[fn])
// 滑动
slideDown([s],[e],[fn])
slideUp([s,[e],[fn]])
slideToggle([s],[e],[fn])
// 淡入淡出
fadeIn([s],[e],[fn])
fadeOut([s],[e],[fn])
fadeTo([[s],o,[e],[fn]])
fadeToggle([s,[e],[fn]])
// 自定义
animate(p,[s],[e],[fn])
示例代码如下:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>动画效果示例</title>
</head>
<body><img style="position: relative" id="i1" width="500" src="http://www.iyi8.com/uploadfile/2015/1024/20151024114500805.jpg" alt="我前女友">
<button id="b1">再见</button>
<button id="b2">再见x2</button>
<button id="b3">往左</button>
<button id="b4">往右</button><script src="jquery-3.2.1.min.js"></script>
<script>$("#b1").on("click", function () {$("#i1").toggle(3000);});$("#b2").on("click", function () {$("#i1").fadeToggle(3000);});$("#b3").on("click", function () {$("#i1").animate({"right": "+50px"}, 3000)});$("#b4").on("click", function () {$("#i1").animate({"right": "-50px"}, 3000)})
</script>
</body>
</html>
自定义点赞示例:
<!DOCTYPE html>
<html lang="zh-CN">
<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>点赞动画示例</title><style>div {position: relative;display: inline-block;}div>i {display: inline-block;color: red;position: absolute;right: -16px;top: -5px;opacity: 1;}</style>
</head>
<body><div id="d1">点赞</div>
<script src="jquery-3.2.1.min.js"></script>
<script>$("#d1").on("click", function () {var newI = document.createElement("i");newI.innerText = "+1";$(this).append(newI);$(this).children("i").animate({opacity: 0}, 1000)})
</script>
</body>
</html>点赞特效简单示例
each
jQuery.each(collection, callback(indexInArray, valueOfElement)):
描述:一个通用的迭代函数,它可以用来无缝迭代对象和数组。数组和类似数组的对象通过一个长度属性(如一个函数的参数对象)来迭代数字索引,从0到length - 1。其他对象通过其属性名进行迭代。
li =[10,20,30,40]
$.each(li,function(i, v){
console.log(i, v);//index是索引,ele是每次循环的具体元素。
})
输出如下:
010
120
230
340
.each(function(index, Element)):
描述:遍历一个jQuery对象,为每个匹配元素执行一个函数。
.each() 方法用来迭代jQuery对象中的每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数)。由于回调函数是在当前DOM元素为上下文的语境中触发的,所以关键字 this 总是指向这个元素。
// 为每一个li标签添加foo
$("li").each(function(){$(this).addClass("c1");
});
注意: jQuery的方法返回一个jQuery对象,遍历jQuery集合中的元素 - 被称为隐式迭代的过程。当这种情况发生时,它通常不需要显式地循环的 .each()方法:
也就是说,上面的例子没有必要使用each()方法,直接像下面这样写就可以了:
$("li").addClass("c1"); // 对所有标签做统一操作
在遍历过程中可以使用 return false提前结束each循环。
return是结束本次循环,进入下次循环
.data()
在匹配的元素集合中的所有元素上存储任意相关数据或返回匹配的元素集合中的第一个元素的给定名称的数据存储的值。
.data(key, value):
描述:在匹配的元素上存储任意相关数据。
$(“div”).data(“k”,100);//给所有div标签都保存一个名为k,值为100
.data(key):
描述: 返回匹配的元素集合中的第一个元素的给定名称的数据存储的值—通过 .data(name, value)或 HTML5 data-*属性设置。
$(“div”).data(“k”);//返回第一个div标签中保存的”k”的值
.removeData(key):
描述:移除存放在元素上的数据,不加key参数表示移除所有保存的数据。
$(“div”).removeData(“k”); //移除元素上存放k对应的数据
示例:
实现表格的增删改
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>作业讲解</title><style>.cover {position: fixed;top: 0;right: 0;bottom: 0;left: 0;background-color: rgba(0, 0, 0, 0.3);z-index: 999;}.modal {position: fixed;top: 50%;left: 50%;width: 400px;height: 300px;margin-top: -150px;margin-left: -200px;background-color: white;z-index: 1000;}.hide {display: none;}</style>
</head>
<body><button id="add-btn">新增</button>
<table border="1"><thead><tr><th>#</th><th>姓名</th><th>爱好</th><th>操作</th></tr></thead><tbody><tr><td>1</td><td>aa</td><td>烧热水</td><td><button class="edit">编辑</button><button class="delete">删除</button></td></tr><tr><td>2</td><td>bb</td><td>烧热水</td><td><button class="edit">编辑</button><button class="delete">删除</button></td></tr><tr><td>3</td><td>cc</td><td>烧热水</td><td><button class="edit">编辑</button><button class="delete">删除</button></td></tr><tr><td>4</td><td>dd</td><td>烧热水</td><td><button class="edit">编辑</button><button class="delete">删除</button></td></tr><tr><td>5</td><td>ee</td><td>喝热水</td><td><button class="edit">编辑</button><button class="delete">删除</button></td></tr></tbody>
</table><div class="cover hide"></div>
<div class="modal hide"><p><label for="modal-name">姓名</label><input id="modal-name" type="text" name="name"></p><p><label for="modal-hobby">爱好</label><input id="modal-hobby" type="text" name="hobby"></p><p><button id="modal-submit">提交</button><button id="modal-cancel">取消</button></p>
</div>
<script src="jquery-3.2.1.min.js"></script>
<script>// 弹出模态框函数function showModal() {$(".cover, .modal").removeClass("hide");}// 关闭模态框function hideModal() {$(".cover, .modal").addClass("hide");// 清空模态框里面的input$(".modal input").val("");}// 绑定事件$(document).ready(function () {// 添加按钮绑定事件$("#add-btn").on("click", function () {showModal();});// 模态框里面的取消按钮,绑定关闭模态框事件$("#modal-cancel").on("click", function () {hideModal();});// 表格中删除按钮绑定事件$("tbody").on("click", ".delete", function () {// this 当前点击的删除按钮// $(this) --> 变成jQuery对象var $currentTr = $(this).parent().parent();// 更新当前行后面的所有tr的序号(tr的第一个td儿子)$currentTr.nextAll().each(function () {var $firstTd = $(this).children().first();// this --> 当前循环中的那个trvar currentNum = parseInt($firstTd.text()) - 1;$firstTd.text(currentNum);});// 删除当前行$currentTr.remove();});// 点击模态框里面的提交按钮,把数据添加到表格中$("#modal-submit").on("click", function () {// 获取模态框里面input的值var name = $("#modal-name").val();var hobby = $("#modal-hobby").val();// 如果是编辑操作,我应该去更新原来的td的值var $tds = $("#modal-submit").data("tds");if ($tds !== undefined) {// 能够取到$tds,表示我是一个编辑的操作// 更新$tds$tds.eq(1).text(name);$tds.eq(2).text(hobby);} else {// 取不到tds,表示我是一个新增的操作// 因为是新增操作,所以要创建新的tr// 创建tr标签var trEle = document.createElement("tr");// 获取当前表格里面所有的tr标签的个数,正好就是我新增tr的序号var currentNum = $("table tr").length;$(trEle).append("<td>" + currentNum + "</td>");$(trEle).append("<td>" + name + "</td>");$(trEle).append("<td>" + hobby + "</td>");$(trEle).append("<td>" + '<button class="edit">编辑</button> <button class="delete">删除</button>' + "</td>");// 把生成的tr标签添加到tbody的最后$(trEle).appendTo("tbody");}// 清空一下$tds$("#modal-submit").removeData("tds");// 隐藏模态框hideModal();});// 编辑按钮$("tbody").on("click", ".edit", function () {// 显示模态框showModal();// 取出当前行的数据,填写到模态框里面的input中// 1.取当前行的数据// this 当前点击的那个编辑按钮// 找到当前行所有的tdvar $tds = $(this).parent().parent().children();$("#modal-submit").data("tds", $tds);var name = $tds.eq(1).text();var hobby = $tds.eq(2).text();console.log(name, hobby);// 将取到的数据填写到模态框里面的input$("#modal-name").val(name);$("#modal-hobby").val(hobby);})})</script>
</body>
</html>
这篇关于jquery-事件、动画效果、each、.data()、表格增删改的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!