python之路_前端基础之jQuery入门3
一、文档操作
(一)插入儿子元素
1、添加到指定元素内部的后面
$(A).append(B):B作为A的最后一个儿子元素;$(A).appendTo(B):A作为B最后一个儿子元素。以上两种A必须为jQuery对象,而B既可以是DOM对象,又可以是jQuery对象,应用实例如下:
<body>
<ul>
<li>111</li>
<li class="c1">222</li>
<li>333</li>
</ul>
<script src="jquery-3.2.1.min.js"></script>
<script>
$(".c1").append("<p>ppp</p>"); //加到.c1里面最后
$(".c1").append($("<p>ppp</p>"));
$("<p>ddd</p>").appendTo("ul"); //加到ul里面最后
$("<p>ddd</p>").appendTo($("ul"))
</script>
</body>
2、添加指定元素内部的前面
$(A).prepend(B):B作为A的第一个儿子元素;$(A).prependTo(B):A作为B第一个儿子元素。以上两种A必须为jQuery对象,而B既可以是DOM对象,又可以是jQuery对象,应用实例如下:
<body>
<ul>
<li>111</li>
<li class="c1">222</li>
<li>333</li>
</ul>
<script src="jquery-3.2.1.min.js"></script>
<script>
$(".c1").prepend("<p>ppp</p>"); //加到.c1里面最前面
$(".c1").prepend($("<p>ppp</p>"));
$("<p>ddd</p>").prependTo("ul"); //加到ul里面最前面
$("<p>ddd</p>").prependTo($("ul"))
</script>
</body>
(二)插入兄弟元素
1、添加到指定元素外部的后面
$(A).after(B):B作为兄弟元素紧挨A元素后面;$(A).insertAfter(B):A作为兄弟元素紧挨B元素后面。以上两种A必须为jQuery对象,而B既可以是DOM对象,又可以是jQuery对象,应用实例如下:
<body>
<ul>
<li>111</li>
<li class="c1">222</li>
<li>333</li>
</ul>
<script src="jquery-3.2.1.min.js"></script>
<script>
$(".c1").after("<p>ppp</p>"); //<p>作为兄弟元素紧挨.c1后面
$(".c1").after($("<p>ppp</p>"));
$("<p>ddd</p>").insertAfter("ul"); //<p>作为兄弟元素紧挨ul后面
$("<p>ddd</p>").insertAfter($("ul"))
</script>
</body>
2、添加到指定元素外部的前面
$(A).before(B):B作为兄弟元素紧挨A元素前面;$(A).insertBefore(B):A作为兄弟元素紧挨B元素前面。以上两种A必须为jQuery对象,而B既可以是DOM对象,又可以是jQuery对象,应用实例如下:
<body>
<ul>
<li>111</li>
<li class="c1">222</li>
<li>333</li>
</ul>
<script src="jquery-3.2.1.min.js"></script>
<script>
$(".c1").before("<p>ppp1</p>"); //p作为兄弟元素紧挨.c1元素前面
$(".c1").before($("<p>ppp2</p>"));
$("<p>ddd1</p>").insertBefore("ul"); //p作为兄弟元素紧挨ul元素前面
$("<p>ddd2</p>").insertBefore($("ul"))
</script>
</body>
(三)移除和清空元素
remove():从DOM中删除所有匹配的元素;empty():删除匹配的元素集合中所有的子节点。
<body>
<ul>
<li class="c1">111</li>
<li class="c1">222</li>
<li>333</li>
</ul>
<script src="jquery-3.2.1.min.js"></script>
<script>
$(".c1").remove(); //将所有的.c1元素删除
$("ul").empty() //将ul下的所有子节点清空
</script>
</body>
(四)替换
$(A).replaceWith(B):A被B替换;$(A).replaceAll(B):A替换所有的B,应用实例:
<body>
<ul>
<li class="c1">111</li>
<li class="c1">222</li>
<li>333</li>
</ul>
<script src="jquery-3.2.1.min.js"></script>
<script>
$(".c1").replaceWith("<p>hhh</p>"); //.c1被<p>hhh</p>替换
$("<p>hhh</p>").replaceAll("li") //<p>hhh</p>替换所有的li标签
</script>
</body>
(五)克隆
clone(),具体应用实例如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>稳重,我们能赢</p>
<script src="jquery-3.2.1.min.js"></script>
<script>
$("p").on("click",function () {
$(this).clone(true).insertAfter(this) //加上true表示连事件也会克隆,即点击复制后的标签内容也可以实现克隆事件
})
</script>
</body>
</html>
.
二、绑定事件
(一)事件绑定
常见的事件类型有:click(点击触发)、hover(悬浮触发)、focus(聚焦触发)、blur(非聚焦触发)、change(主要用于select标签,更改选中就会触发)、keyup(输入按键一弹起就会触发事件,如电商网站搜索框,用户每输入一个字符,都会帮你用户提示相关内容),绑定事件的语法如下:
jQuery对象.on(事件类型,function(){})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="text" placeholder="对子哈特" id="d1">
<select name="" id="d2">
<option value="1">男</option>
<option value="2">女</option>
</select>
<p id="recommend"></p>
<script src="jquery-3.2.1.min.js"></script>
<script>
var $d=$("#d1");
//focus
$d.on("focus",function () {
$(this).attr("placeholder","")
});
//blur
$d.on("blur",function () {
$(this).attr("placeholder","对子哈特")
});
//keyup
$d.on("keyup", function () {
// 取值,发后端做联想检索
var userInput= $(this).val();
alert(userInput);
});
//change
$("#d2").on("change",function () {
if($(this).val()==1){
$("#recommend").text("为你推荐美女服务")
}
else{
$("#recommend").text("为你推荐帅哥服务")
}
})
</script>
</body>
</html>
(二)事件委托
同样以js部分讲到事件委托用到表格删除为例,删除事件委托实例如下:
$("table").on("click", ".delete", function () {
$(this).parent().parent().remove(); // 删除当前行
});
三、动画属性
常见动画属性如下:
// 基本 show() ---显示 hide() ---隐藏 toggle() ---切换 // 滑动 slideDown() slideUp() slideToggle() // 淡入淡出 fadeIn() fadeOut() fadeTo() fadeToggle() // 自定义 animate()
左侧菜单动画实例:
<head>
<meta charset="UTF-8">
<title>左侧菜单示例</title>
<style>
.hide {
display: none;
}
.menu {
width: 300px;
height: 600px;
border: 1px solid black;
background-color: #c0cddf;
}
.title {
background-color: #4949ff;
height: 36px;
line-height: 36px;
color: white;
}
</style>
</head>
<body>
<div class="menu">
<div class="title" onclick="showBody(this);">菜单一</div>
<div class="body hide">
<ul>
<li>内容一</li>
<li>内容二</li>
<li>内容三</li>
</ul>
</div>
<div class="title" onclick="showBody(this);">菜单二</div>
<div class="body hide">
<ul>
<li>内容一</li>
<li>内容二</li>
<li>内容三</li>
</ul>
</div>
<div class="title" onclick="showBody(this);">菜单三</div>
<div class="body hide">
<ul>
<li>内容一</li>
<li>内容二</li>
<li>内容三</li>
</ul>
</div>
</div>
<script src="jquery-3.2.1.min.js"></script>
<script>
function showBody(self) {
$(self).next().slideDown().siblings(".body").slideUp();
}
</script>
</body>
四、each()和data()
1、each()
each(function)方法用来迭代jQuery对象中的每一个DOM元素。每次回调函数执行时,会传递当前循环次数作为参数(从0开始计数)。由于回调函数是在当前DOM元素为上下文的语境中触发的,所以关键字 this 总是指向这个元素。

但是需要注意如下:jQuery的方法返回一个jQuery对象,遍历jQuery集合中的元素 - 被称为隐式迭代的过程。当这种情况发生时,它通常不需要显式地循环的.each()方法,也就是说上述的例子可以直接用如下形式实现:

通过return false语句可以提前结束循环。
each(迭代对象,function(index,value)),应用实例:

2、data()
data(key,value):在匹配的元素上存储任意相关数据,如下:

data(key):返回匹配的元素集合中的第一个元素的给定名称的数据存储的值,如下:

以上的应用实例如下表单的增删改实例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.delete{
background-color: red;
color: white;
}
.edit{
background-color: green;
color: white;
}
.hide{
display: none;
}
.shade{
position: fixed;
background-color: #cccccc;
top: 0;
bottom: 0;
right: 0;
left: 0;
opacity: 0.5;
}
.model{
position: fixed;
top: 50%;
right: 50%;
width: 400px;
height: 300px;
margin-right: -150px;
margin-top: -200px;
background-color: white;
}
</style>
</head>
<body>
<button class="add">添加</button>
<table border="1px" cellpadding="10px" cellspacing="5px">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>爱好</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>alex</td>
<td>吹逼</td>
<td>
<button class="delete">删除</button>
<button class="edit">编辑</button>
</td>
</tr>
<tr>
<td>2</td>
<td>egon</td>
<td>杠娘</td>
<td>
<button class="delete">删除</button>
<button class="edit">编辑</button>
</td>
</tr>
</tbody>
</table>
<div class="shade hide"></div>
<div class="model hide">
<p><label for="">姓名<input type="text" class="item name"></label></p>
<p><label for="">爱好<input type="text" class="item hobby"></label></p>
<p>
<input type="button" value="提交" class="submit">
<input type="button" value="取消" class="cancel">
</p>
</div>
<script src="jquery-3.2.1.min.js"></script>
<script>
/*定义一个显示模态框函数*/
function show() {
$(".shade").removeClass("hide");
$(".model").removeClass("hide")
}
/*定义一个关闭模态框函数*/
function close() {
$(".shade").addClass("hide");
$(".model").addClass("hide")
}
/*定义一个清除input内容的函数*/
function clearInput() {
$(".item").each(function () {
$(this).val("")
})
}
/*定义了一个获取添加数据所需顺序序号的函数*/
function getNummber() {
var $trNummber=$("tbody").children();
// console.log($trNummber.length)
var lastNummber=$trNummber.length+1;
// console.log(lastNummber)
return lastNummber;
}
/*添加按钮绑定事件*/
$(".add").on("click",function () {
show()
});
/*input框的取消按钮绑定事件*/
$(".cancel").on("click",function () {
clearInput();
close()
});
/*input框的提交按钮绑定事件*/
$(".submit").on("click",function () {
var arr=[];
$(".item").each(function () {
arr.push($(this).val())
});
if($(".model").data("tr")){
var nummber1=$(".model").data("nummber");
var s1=" <tr><td>"+nummber1+"</td><td>"+arr[0]+"</td><td>"+arr[1]+"</td><td><button class=\"delete\">删除</button> <button class=\"edit\">编辑</button></td></tr>";
$(".model").data("tr").replaceWith(s1)
}
else {
var nummber2=getNummber();
var s2=" <tr><td>"+nummber2+"</td><td>"+arr[0]+"</td><td>"+arr[1]+"</td><td><button class=\"delete\">删除</button> <button class=\"edit\">编辑</button></td></tr>";
$("tbody").append(s2);
}
clearInput();
close()
});
/*删除按钮事件委托*/
$("tbody").on("click",".delete",function () {
$(this).parent().parent().remove()
});
/*编辑按钮事件委托*/
$("tbody").on("click",".edit",function () {
show();
var $td_Object=$(this).parent().siblings();
// console.log($td_Object);
var old_text=[];
$td_Object.each(function () {
old_text.push($(this).text())
});
// console.log(old_text);
$(".name").val(old_text[1]);
$(".hobby").val(old_text[2]);
var $edit_tr=$(this).parent().parent();
$(".model").data("tr",$edit_tr);
$(".model").data("nummber",old_text[0]);
// console.log( $(".model").data("tr"));
// console.log( $(".model").data("nummber"))
})
</script>
</body>
</html>

浙公网安备 33010602011771号