事件处理
一,加载Dom两种方式
1,window.onload方式
2,jQuery方式
二,绑定事件两种方式
1,元素 . on
2,元素 . 事件名
三,合成事件/事件切换
1,hover():鼠标悬停合成事件
2,toggle():鼠标点击合成事件
四,事件传播
1,传播:小>中>大
2,阻止传播:事件后面加上return false
五,事件坐标
1,offsetX:当前元素左上角
2,clientX:窗口左上角
3,page:网页左上角
六,移出事件
元素.unbind("事件名")
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
/* a标签属于行内元素,不能设置宽度和高度 */
a{
background-color: red;
/* 转成行内块状 或者块状 */
display: inline-block;
width:150px;
height: 40px;
/* 居中 */
text-align: center;
/* 行高 */
line-height: 40px;
/* 下划线 */
text-decoration: none;
}
/* 伪类选择器 */
a:hover{
background-color: yellow;
color: red;
}
</style>
<script src="js/jquery-3.6.0.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
/* 一、事件 */
//1.1 加载DOM两种方式(区别)
// 在一个页面中出现多个window.onload,后者会覆盖前者
// window.onload = function(){
// alert('第一个加载函数');
// }
// window.onload = function(){
// alert('第二个函数');
// }
// window.addEventListener('load',function(){
// alert("周jl");
// });
// window.addEventListener('load',function(){
// alert("猴子");
// });
//jQuery加载函数
// $(document).ready(function(){}
// alert(111);
// );
// $(document).ready(function(){}
// alert(1111);
// );
// $(function(){
// alert(123)
// });
// 2.js的加载函数和jQuery的加载函数出现在一个页面,先后顺序
// 版本有关 jQuery3.0版本以上 js快
// window.onload = function(){
// alert("原生态js")
// }
// $(function(){
// alert('jQuery')
// });
$(function(){
//1.2 绑定事件的两种方式 [eg.:点击、悬停事件等等]
//--元素.on/bind()
//--元素.事件名
// 1 直接调用click点击事件的方法即可
// $("#btn1").click(function(){
// alert("aa")
// });
// 2 可以通过标签对象调用on这个方法来绑定一个指定的事件
// $("#btn1").on('click',function(){
// alert("on实现点击")
// }
//可以通过调用bing方法进行绑定一个事件
// $("#btn1").bing('click',function(){
// alert("bing实现点击")
// }
//1.3 合成事件/事件切换
//--hover()悬停控制元素[div]的显示和隐藏
//--toggle()点击控制元素[div]的显示和隐藏[注意版本问题]
$("#btn2").hover(function(){
console.log('111')
// 标签显示show 属于jQuery中的动画效果
// $("#oDiv").show();
$("#oDiv").css("display","block");
},function(){
console.log('222')
// 标签隐藏
// $("#oDiv").hide();
$("#oDiv").css("display","none");
});
// toggle事件
$("#btn3").click(function(){
console.log("我点击了");
// 在jQuery中所有的动画效果都是默认改变标签的宽度,高度,透明度
$("#oDiv2").toggle(3000);
})
//1.4 事件的传播(事件冒泡) 小p->中div->大body
$(function(){
// p 的点击事件
$("p").click(function(){
alert('p的点击事件')
return false;
});
//div 点击事件
$("#oDiv3").click(function(){
alert('oDiv3的点击事件')
return false;
});
// body 点击事件
$("body").click(function(){
alert('body的点击事件')
});
});
//1.5 事件event的坐标[了解即可 pageX,pageY]
$("body").click(function(){
// 获取鼠标所点击的位置
// 鼠标的坐标
console.log(event.pageX+" "+event.pageY);
// // 偏移量 考虑了外边距,边框,内填充
console.log(event.offsetX+" "+event.offsetY);
// // 如果没有滚动条,与pageX和pageY是一样的
// // client 可视区宽度和高度
console.log(event.clientX+" "+event.clientY)
});
//1.6 事件的移除
//--按钮只能点击一次[2]
//--按钮点击偶数次可行 奇数次不行
$(function(){
// unbind off
$("#btn4").click(function(){
alert("恭喜你中奖了~");
// 调用解绑事件
// $(this).off();
// $(this).disable();//禁用 无效
// disabled 是属性 不是样式 不能用css去设置
$(this).attr("disabled","disabled");
$(this).unbind();
});
var index = 1;
$("#btn5").click(function(){
// 点击(奇数次可以,偶数次不行)
// index为奇数的时候可以 为偶数的时候不行
if(index % 2 == 1){
console.log(index);
}
index++;
});
$("#btn6").one('click',function(){
alert("只有一次机会")
})
});
[2]
});
</script>
</head>
<body>
<button id="btn1" disabled="disabled">按钮</button>
<hr>
<!-- 伪类选择器的使用hover -->
<a href="">周杰伦</a>
<hr>
<button type="button" id="btn2">按钮</button>
<div id="oDiv" style="width:100px;height: 100px;background-color: red;display: none;"></div>
<hr >
<button type="button" id = "btn3">toggle</button>
<div id="oDiv2" style="width:100px;height: 100px;background-color: red;display: none;"></div>
<hr>
<h4>事件传播如何阻止</h4>
<div id = "oDiv3" style="width: 200px;height: 200px;background-color: red;">
<br><br><br><br>
<p style="width:100%;height: 20px;background-color: yellow;">我是p段落</p>
</div>
<hr>
<h4>解绑事件</h4>
<button id="btn4">点击抽象</button>
<button id="btn5">点击(奇数次可以,偶数次不行)</button>
<button id="btn6">one方法 一次性</button></button>
</body>
</html>
动画效果
1,动画隐藏----show
动画显示-----hide
两个方法融合成一个按钮使用-----Toggle
2,动画向上隐藏-----slideUp
动画向下显示-----sliderDown
两个方法融合成一个按钮使用------slideToggle
3,显示动画透明度-----fadeIn
动画变成透明-----fadeOut
两个方法用一个按钮实现-----fadeToggle
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="js/jquery-3.6.0.js" type="text/javascript">
</script>
<script type="text/javascript">
// 动画隐藏
function test1(){
$("div").eq(0).show(3000);
}
// 动画显示
function test2(){
$("div").eq(0).hide(3000);
}
// 两个方法用一个按钮使用
function test3(){
$("div").eq(0).toggle(6000);
}
// 动画往上隐藏
function test4(){
$("div").eq(1).slideUp();
}
// 动画往下显示
function test5(){
$("div").eq(1).slideDown();
}
// 两个方法用一个按钮实现
function test6(){
$("div").eq(1).slideToggle();
}
// 显示隐藏动画------更改透明度
function test7(){
$("div").eq(2).fadeIn(1000);
}
// 隐藏动画------更改透明度
function test8(){
$("div").eq(2).fadeOut(1000);
}
// ;两个方法用一个按钮实现
function test9(){
$("div").eq(2).fadeToggle(2000);
}
function test10(){
$("div").last().animate({
width:"+=600px",
height:"+=600px",
opacity:"0.1"
},10000)
}
$(function(){
$("div").last().animate({
left:"800px"
},10000)
})
</script>
</head>
<body>
<!-- 方法按钮 -->
<button onclick="test1()">基本动画show</button>
<button onclick="test2()">基本动画hide</button>
<button onclick="test3()">基本合成动画toggle</button>
<div style="width: 100px; height: 100px; background-color: red;">
</div>
<button onclick="test4()">slideUp</button>
<button onclick="test5()">slideDown</button>
<button onclick="test6()">slidetoggle</button>
<div style="width: 100px; height: 100px; background-color: pink;">
</div>
<button onclick="test7()">fadeIn</button>
<button onclick="test8()">fadeOut</button>
<button onclick="test9()">fadetoggle</button>
<div style="width: 100px; height: 100px; background-color: green;">
</div>
<hr >
<button onclick="test10()">animate</button>
<div style="width: 200px; height: 200px; background-color: blue;">
</div>
<div style="width: 200px; height: 200px; background-color: orange;position: :absolute;left: 0;top: 900px;">
</div>
</body>
</html>