事件解析 :
jQuery基本的事件共有以下6种。
·页面事件。
·鼠标事件。
·键盘事件。
·表单事件。
·编辑事件。
·滚动事件。
事件操作是jQuery的核心。
1.页面事件
在jQuery中 ,我们使用$(documend).ready()来替代JavaScript中的window.onload ,但这两者之间有着一些区别 。
(1)JavaScript的onload事件
在JavaScript中 , onload表示文档加载完成后再执行的一个事件 。
语法 :window.onload = function(){
……………….
}
说明 :对于 JavaScript 的 onload 事件来说 ,只有当页面上的所有DOM元素以及所有外部文件(图片,外部CSS,外部JavaScript等)都加载完成之后再执行 。这里的“所有DOM元素”,指的是HTML部分的代码 。
(2)jQuery的ready事件
在jQuery中,ready也表示文档加载完成后再执行的一个事件。
语法 :$(document).ready(function(){
………………….
});
说明 :对于 jQuery 的 ready 事件来说 ,只要当页面上的所有DOM元素加载完成就可以执行 ,不需要等外部文件(图片,外部CSS,外部JavaScript等)加载完成。
jQuery的ready事件相当于JavaScript的onload事件来说,极大地提高了页面的响应速度,提供了更好的用户体验。
(3)ready事件的4种写法。
写法1 :
$(documend).ready(function(){
……………………..
});
写法2 :
jQuery(documend).ready(function(){
……………………..
});
写法3 :
$(function(){
……………………..
});
写法4 :
jQuery(function(){
……………………..
});
2.鼠标事件
事件 | 说明 |
click | 鼠标单击事件 |
mouseover | 鼠标移入事件 |
mouseout | 鼠标移出事件 |
mousedown | 鼠标按下事件 |
mouseup | 鼠标松开事件 |
mousemove | 鼠标移动事件 |
(1)鼠标单击
注意 :单击事件不只是按钮台有,我们可以为任何元素添单击事件 。
举例 :为div元素添加单击事件
$(function(){
$("div").click(function(){
alert("……..");
})
})
举例 :自动触发点击事件
$(function(){
$("#btn").click(function(){
alert("………..");
}).click();
})
(2)鼠标移入和鼠标移出
举例 :移入和移出
<script>
$(function () {
$("div").mouseover(function () {
$(this).css("color", "red");
})
$("div").mouseout(function () {
$(this).css("color", "black"); //(this等价于“div”)
})
})
</script>
<body>
<div>可舒服了</div>
</body>
(3)鼠标按下和鼠标松开
举例 :
<script>
$(function () {
$("#btn").mousedown(function () {
$("h1").css("color", "red");
})
$("#btn").mouseup(function () {
$("h1").css("color", "black");
})
})
</script>
<body>
<h1>学习</h1>
<input id="btn" type="button" value="按钮"/>
</body>
3.键盘事件
在jQuery中,常用的键盘事件共有两种。
·键盘按下 :keydown 。
·键盘松开 :keyup 。
举例 :统计输入字符的长度
<script>
$(function () {
$("#txt").keyup(function () {
var str = $(this).val();
$("#num").text(str.length);
})
})
</script>
<body>
<input id="txt" type="text"/>
<div>
字符串长度为 :
<span id="num">0</span>
</div>
</body>
4.表单事件
在jQuery中,常用的表单数据有3种。
·focus和blur.
·select .
·change.
还有一个submit事件 。不过 ,submit事件一般都是结合后端技术来使用。
(1)focus 和 blur
focus表示获取焦点时触发的事件,而blur表示失去焦点时触发的事件,两者是相反的操作。
并不是所有的HTML元素都有焦点事件 ,具有“获取焦点”和“失去焦点”特点的元素只有两种。
·表单元素(单选按钮 ,复选框 ,单行文本框 ,多行文本框 ,下拉列表)。
·超链接。
<input id="search" type="text" value="百度一下"/ >
<input type="button" value="搜索"/>
<script>
$(function () {
//获取文本框默认值
var txt = $("#search").val();
//获取焦点
$("#search").focus(function () {
if($(this).val() == txt){
$(this).val("");
}
})
//失去焦点
$("#search").blur(function () {
if ($(this).val() == "") {
$(this).val(txt);
}
})
})
</script>
(2)select
在jQuery中 ,当我们选中“单行文本框”或“多行文本框”中的内容时 ,就会触发select事件。
举例 :
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>select</title>
<script src="~/Content/bootstrap-4.1.3-dist/js/jquery-3.2.1.js"></script>
<script>
$(function () {
$("#txt1").select(function () {
alert("单行文本框的内容");
})
$("#txt2").select(function () {
alert("你选中了多行文本框的内容");
})
})
</script>
</head>
<body>
<input id="txt1" type="text" value="爱你哟"/><br>
<textarea id="txt2" cols="20" rows="5" style="margin-top:10px;">爱你呢</textarea>
</body>
</html>
(3)change
在jQuery中 ,change事件常用于“具有多个选项的表单元素”中change事件在以下三种情况下被触发 。
·单选框选择某一项时触发 。
·复选框选择某一项时触发 。
·下拉菜单选择某一项时触发 。
举例 :
5.编辑事件
在jQuery中 ,常用的编辑事件只有一种 ,那就是contexmenu事件 。
主要控制应该何时显示上下文菜单,以便开发人员取消默认的上下文菜单而提供自定义的菜单。
举例 :禁用鼠标右键
。。。。。。
分析 :虽然鼠标右键被禁用了,但是我们还是可以用快捷键,如使用“ctel”+“c”快捷键来复制内容,使用“ctrl”+“s”快捷键来保存网页等,并不能真正地防止复制。
contextmenu 事件在大多数情况下都是用来保护版权的。
6.滚动事件
滚动事件 ,指的就是拉动页面滚动条是所触发的事件。
在jQueery中,我们可以使用scroll()方法来表示滚动事件。
语法 :$().scroll(function(){
…………
});
说明 :scroll()方法经常配合scrollTop方法了一起使用。
举例:回到顶部
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>scrol</title>
<style type="text/css">
body{
height: 1800px;
}
div{
position:fixed;
right: 50px;
bottom:50px;
display:none;
width:40px;
height:40px;
color:white;
background-color:#45B823;
font-family:微软雅黑;
font-size: 15px;
font-weight:bold;
text-align:center;
cursor:pointer;
}
</style>
<script src="~/Content/bootstrap-4.1.3-dist/js/jquery-3.2.1.js"></script>
<script>
$(function () {
//根据滚动距离判断按钮是显示或隐藏
$(window).scroll(function () {
if ($(this).scrollTop() > 300) {
$("div").css("display", "inline-block");
}
else {
$("div").css("display", "none");
}
});
//实现点击滚动回到顶部
$("div").click(function () {
$("html,body").scrollTop(0);
});
})
</script>
</head>
<body>
<h3>你是谁</h3>
<div>回到顶部</div>
</body>
</html>