一、窗口事件类型函数
1.resize
用于窗口对象(window),当窗口大小发生变化时调用。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-1.9.1.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function() {
$(window).resize(function() {
alert("我被改变大小了!");
});
});
</script>
</head>
<body>
</body>
</html>
2.scroll
用于窗口、iframe、div 等可能出现滚动条的对象。当使用鼠标滚轮滚动时调用。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-1.10.2.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function() {
var count = 0;
$(window).scroll(function() {
// alert(count)
$("span").text(count++);
});
});
</script>
</head>
<body>
<div style="height: 1400px;background-color: aquamarine;">
</div>
<span>0</span>
</body>
</html>
3.window.onload、body.onload、document 的区别
window.onload 和 body.onload 为同一事件绑定方式,同时绑定时只调用一个。
唯一的区别是, 可以在 body 标签上声明处理函数。例如<body onload=‘init()’>
这两个事件对应的是整个文档(包含文档上的 css、js、html、图片信息)加载完成后调用。只能写一次 document.ready:当 html 文档解析后就调用事件处理函数。图片、css 等此时有可能没有加载,不兼容。
文档加载事件函数:
load:用于 window、图片等。在文档或图片加载完成后执行处理函数。
ready:用于 document 对象,当文档加载后执行处理函数,相当于 document.onload.可以写多次
–举例:$(document).ready(fun1);
–缩写:$(fun1);
unload:用于 window 对象。在文档关闭前执行处理函数。
二、表单事件函数
1.focus
当元素获得焦点时触发目标函数,不支持冒泡;
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-1.10.2.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function() { //在页面加载完成后让#username 得到焦点
$("#username").focus();
});
</script>
</head>
<body>
<input type="text" id="a" value="a" />
<input type="text" id="b" value="b" />
<input type="text" id="username" value="zs" />
<input type="text" id="c" value="c" />
</body>
</html>
效果展示:
2.focusin
和 focus 一样,只是此事件支持冒泡;focusin 事件跟 focus 事件区别在于,他可以在父元素上检测子元素获取焦点的情况。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-1.10.2.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function() {
$("p").focusin(function() {
$(this).find("span").css("display", "inline").fadeOut(1000);
});
});
</script>
</head>
<body>
<p><input type="text" /> <span>focusout fire</span></p>
<p><input type="password" /> <span>focusout fire</span></p>
</body>
</html>
效果展示:
3.blur
当 focusable 元素失去焦点时触发目标函数,不支持冒泡;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="js/jquery-1.10.2.min.js" ></script>
<!--判断输入的值是否是数,如果是数就不管了,不是数要弹框警告-->
<script type="text/javascript">
$(function(){
var old=0;
$("#numb").focus(function(){
old=$(this).val();
})
$("#numb").blur(function(){
var t=$(this).val();
if(isNaN(t))
{
$(this).val(old);
alert("输入错误");
}
else{
alert("输入正确");
}
// parseFloat() parseInt() 将字符串转换成数,如果转换不成功 Nan。
// 如果数字开头的字符串,会将数字转换成数类型。
// var numb = parseInt(v);
// alert(isNaN(v))
})
})
</script>
</head>
<body>
请输入购买数量:<input type="text" id="numb" value="0" />
</body>
</html>
效果展示:
4.focusout
和 blur 一样,只是此事件支持冒泡;select
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-1.10.2.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function() {
$("p").focusout(function() {
$(this).find("span").css("display", "inline").fadeOut(1000);
});
});
</script>
</head>
<body>
<p><input type="text" /> <span>focusout fire</span></p>
<p><input type="password" /> <span>focusout fire</span></p>
</body>
</html>
效果展示:
5.change
当下拉框、单选框,文本框的值发生变化时调用
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="js/jquery-1.10.2.min.js" ></script>
</head>
<body>
<select id="num" name="num">
<option value="4">4</option>
<option value="8">8</option>
<option value="12">12</option>
<option value="16">16</option>
</select>
当前每一页显示<span id="pages">6</span>条信息。
<script type="text/javascript">
$(function(){
$("#num").change(function(){
alert("已绑定");
var value=$(this).val();
$("#pages").html(value);
})
})
</script>
</body>
</html>
6.submit
当表单提交时触发,return false 不提交 return true 提交。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="js/jquery-1.10.2.min.js" ></script>
<script type="text/javascript">
$(function(){
$("#sub_btn").click(function(){
var val1= $("#uname").val();
var val2=$("#psd").val();
if(val1==null||val1==""){
alert("请输入账号");
}
else if(val2==null||val2==""){
alert("请输入密码");
}
else{
$("#myform").submit();
}
})
})
</script>
</head>
<body>
<form id="myform" action="index.html">
用户名:<input type="text" id="uname" name="uname" placeholder="请输入用户名"/>
密码:<input type="password" id="psd" name="psd" placeholder="请输入密码"/>
<input type="button" id="sub_btn" value="登录"/> <!-- 注意:type值不能为submit;标签要用input,不能用button-->
<!-- button自带submit效果,若type为submit同理,会自动提交-->
</form>
</body>
</html>
三、jQuery 事件对象内置函数及属性
1.event.currentTarget
获取绑定事件的 DOM 元素,相当于 this。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-1.10.2.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function() {
$("p").click(function(e) {
console.log($(this).html());
console.log(e.currentTarget);
console.log(e.currentTarget == this);
})
})
</script>
</head>
<body>
<p>刘备</p>
<p>刘备 2</p>
</body>
</html>
效果展示:
2.event.data
传递给执行函数的参数。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-1.10.2.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(function() {
$("p").click({
id: 1
}, function(e) {
console.log(e.data.id);
//通过 e.data.参数名取得传参的值
console.log($(this).html());
console.log(e.currentTarget);
console.log(e.currentTarget==this);
})
})
</script>
</head>
<body>
<p>刘备</p>
<p>刘备 2</p>
</body>
</html>
效果展示:
event.isDefaultPrevented():返回是否调用
event.preventDefault() 方法,来返回一个布尔值。
event.pageX:鼠标相对于文档的左边缘的位置(左边)。
event.pageY:鼠标相对于文档的顶部边缘的位置(坐标)。
event.preventDefault()如果调用这个方法,默认事件行为将不再触发。
event.target:触发事件的 DOM 元素。
event.timeStamp:这个属性返回事件触发时距离 1970 年 1 月 1 日的毫秒数。
event.type:描述事件的性质
总结
1.blur:元素失去焦点时触发目标函数,不支持冒泡
2.focusout:元素失去焦点时触发目标函数,支持冒泡
3.change:当下拉框、单选框,文本框的值发生变化时调用
4.submit:当表单提交时触发,return false 不提交 return true 提交
5.event.currentTarget:获取绑定事件的 DOM 元素,相当于 this
6.event.data:传递给执行函数的参数,拿到参数:event.data.参数名