jQuery的事件机制
完整的机制,注册事件,移除事件,也可以去触发事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button id="btn">点我产生新标签</button>
<div>
<p>1111</p>
</div>
<script src="jquery-3.3.1.js"></script>
<script>
$(function () {
//注册简单事件,缺点:一次只能注册一个事件
// $("p").click(function () {
// alert("西西");
// });
// $("p").mouseover(function () {
// console.log("嗷呜");
// });
//通过bind注册事件
// $("p").bind("click",function () {
// alert("蛤蛤");
// })
// $("p").bind({
// click:function () {
// console.log(("我是bind的click"));
// },
// mouseenter:function () {
// console.log(("我是bind的mouseenter"));
// }
// })
// 假如新建了元素按照以上两种方法无法对新建的p标签进行
$("#btn").click(function () {
$("<p>我是新建的p标签</p>").appendTo("div")
});
//delegate 代表,委派代表
//delegate()参数 第一个是选择器 第二个是事件类型 第三个不用管 第四个是function
$("div").delegate("p","click",function () {
console.log(("嘻嘻嘻嘻嘻我是delegate方法产生的"));
})
//第一个参数是事件最终由谁来执行,
//第二个参数:事件的类型
//第三个参数:function,函数要去做什么
//给父级元素注册,但是最后还是给子元素执行
//简单事件,给自己注册的事件,自己来执行
//委托事件,不是自己执行,
//动态创建的也能有事件
//后来on统一了所有的事件处理方法
//既可以注册简单事件也可以注册委托事件
})
</script>
</body>
</html>
1111
关于on方法注册事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button>点我</button>
<div>
<p>111</p>
<p>22</p>
<p>33</p>
<p>44</p>
</div>
<script src="jquery-3.3.1.js"></script>
<script>
$(function () {
$("p").on("click",function () {
alert("呵呵");
});
$("div").on("click","p",function () {
console.log(("我是由on函数出现的"));
});
$("button").click(function () {
$("<p>我是新建的p标签</p>").appendTo("div");
})
})
</script>
</body>
</html>
事件执行的顺序,先是委托事件,然后是自己的事件
事件解绑的顺序,可以有unbind 还有undelegate 都不推荐使用
还是off进行事件的解绑
总结:jQuery事件对象
jQuery事件对象其实就是js事件对象的一个封装,处理了兼容性,不用担心兼容问题
阻止浏览器的默认行为
e.preventDefault();阻止浏览器默认行为
e.stopPropagation();阻止事件冒泡
return false //既可以阻止浏览器默认行为,又可以阻止事件冒泡