jQuery的事件

时间:2024-12-02 00:06:49

事件冒泡处理

使用event.stopPropagation();阻止事件冒泡

冒泡事件也可以使用return false来处理

并且

    <script type="text/javascript" src="jQuery3.3.1.js"></script>
<script>
$(function () {
$('.box button').click(function (event) {
alert('点击了button');
});
$('.box').click(function (event) {
alert('点击了box');
//事件冒泡阻止
event.stopPropagation()
})
})
/*事件冒泡,当一个div标签里面有一个button元素时
给div与button绑定点击事件,当点击button的时候也会触发div绑定的事件
jquery中只有事件冒泡阶段,没有puhuo
事件冒泡阶段:button->body->html->document
使用stopPropagation()可以处理事件冒泡这种情况
或者使用return false也可以处理事件冒泡,不过return false也会处理默认的js事件,比如说a标签的跳转 */
</script>

jquery的事件

单双击事件

  • 单击事件click()
  • 双击事件dblclick()

一个按键同时绑定单击事件以及双击事件,两次单击中间的事件差是300毫秒,如果小于300毫秒,表示双击。假如小于300毫秒,也是表示调用了两次单击,一次双击。如果是单击

    <script type="text/javascript" src="jQuery3.3.1.js"></script>
<script>
$(function () {
//解决单双击事件冲突问题
var timeer = null;
$('button').click(function () {
//上来先把timer定时器清空了
clearTimeout(timeer);
//定时器,延时300毫秒
timeer=setTimeout(function () {
console.log('单击了');
},300)
});
$('button').dblclick(function () {
//触发了双击事件也把定时器清空了
clearTimeout(timeer);
console.log('双击了')
});
})
</script>

鼠标移入移出事件

  • mouseover()移入

  • mouseout()移出

  • mouseenter()移入

  • mouseleave()移出

  • 合成事件

    • hover()这个是jquery中的合成事件,合成了mouseenter与mouseleave事件
<head>
<meta charset="UTF-8">
<title>合成事件</title>
<style>
.shop-car{
position: relative;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
background-color: #666;
}
.shop{
width: 400px;
height: 200px;
display: none;
background-color: red;
}
</style>
</head>
<body>
<div class="shop-car">
<span>购物车</span>
<div class="shop"></div>
</div>
<script type="text/javascript" src="jQuery3.3.1.js"></script>
<script>
$(function () {
$('.shop-car').hover(function () {
$('.shop').stop().slideDown(500);
},function () {
$('.shop').stop().slideUp(500);
})
})
</script>
</body>

表单事件

  • select()事件,文本选中的时候会调用
<body>
<form action="#">
<input type="text">
</form>
<script type="text/javascript" src="jQuery3.3.1.js"></script>
<script>
$('input[type=text]').select(function () {
console.log('内容被选中了')
})
</script>
</body>
  • submit()事件
<script type="text/javascript" src="jQuery3.3.1.js"></script>
<script>
$(function () {
//原声js的是onsubmit事件
$('from').submit(function (e) {
//阻止form表单的默认事件(submit触发form表单的action,往action发请求)
e.preventDefault(); //自定义去发请求
console.log('form被submit了')
})
})
</script>

鼠标的聚焦,失焦,键盘事件

  • focus()获得焦点:输入框标示闪烁
  • blur()失去焦点:输入框标示不闪烁
  • 键盘按键keyup()
<script type="text/javascript" src="jQuery3.3.1.js"></script>
<script>
$('input[type=text]').keyup(function (e) {
//e.keyCode是键盘的键码
//可以通过键盘键码使用流程控制判断进行控制
console.log(e.keyCode)
})
</script>

事件委托

事件委托:利用事件冒泡原理,需要动态往父级元素里面添加标签,并且让新添加的标签拥有与兄弟标签一样的事件,可以使用事件委托

<body>
<ul>
<li>111</li>
<li>222</li>
</ul>
<button>按钮</button>
<script type="text/javascript" src="jQuery3.3.1.js"></script>
<script>
$(function () {
//事件委托(如果是未来追加的元素,需要绑定事件,可以使用事件委托)
//on() 第一个属性事件名,第二个属性是选择器,第三个是fun
$('ul').on('click','li',function () {
alert($(this).text())
});
//未来动态的往ul中追加了li标签,如果只是ul>li标签绑定了click事件,那么可以考虑使用事件委托
$('button').click(function () {
$('ul').append('<li>喵</li>')
})
})
</script>
</body>