二者的区别:
通过第一种方式可以调用jQuery中内部定义好的事件。二如果代用原生JS的某些jQuery没有实现的方法时则不能调用。而on()这种方法刚好不上了这个短板,是jQuery绑定事件有更多方式。
jQuery事件的特点:
off(),用来移除事件,可以传递参数用来移除指定的
//第一种注册事件的方法
$("button").click(function(){
console.log("click");
});
//第二种注册事件的方式,比较灵活使用性更强,可以注册费jQuery事件
$("button").on("click",function () {
console.log("click");
});
若干个标签嵌套,子元素触发事件后会触发父元素的事件,这种现象称为事件冒泡。
去除冒泡的方法: 在子元素的事件回调函数中return false即可解决。
a标签默认会进行跳转、button默认会跳转到提交数据的页面。为了改变这种行为可在事件的回调函数中返回一个false。
使用trigger(“事件名称”)。
利用trigger()触发事件会触发一些功能的默认行为,而triggerHander()则不会触发。
在触发事件的名称后面加“.name”, 使用触发事件的方法时可以触发指定的方法。
事件委托就是请别人做事情。
当jQuery核心函数找到不止一个元素添加事件时,jQuery底层会遍历找到的元素,然后依次为它们注册事件。
用来实现一个元素对另一个元素的监听。
代码示例:
通过点击按钮弹出登陆框,然后在登陆框点击后关闭登陆框。
<style>
.mask{
width: 100%;
height:100%;
position: fixed;
background: rgba(0,0,0,0.4);
left: 0;
top:0;
}
.box{
width: 400px;
height: 300px;
background: whitesmoke;
position:relative;
left: 50%;
margin-left: -200px;
top:50%;
margin-top: -150px;
}
style>
<button class="login-btn">登陆按钮button>
<p>段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落
段落 段落 段落 段落 段落 段落p>
<p>段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落
段落 段落 段落 段落 段落 段落p>
<p>段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落
段落 段落 段落 段落 段落 段落p>
<p>段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落
段落 段落 段落 段落 段落 段落p>
<p>段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落
段落 段落 段落 段落 段落 段落p>
<p>段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落 段落
段落 段落 段落 段落 段落 段落p>
<script>
var $mask = $("\n" +
" \n" +
" \n" +
" \n" +
"");
console.log($mask);
$(".login-btn").click(function () {
$("body").append($mask);
$("body").delegate(".mask>.box>button","click",function () {
// alert("test delegate()")
$mask.remove();
})
})
script>
滑动:
jQuery中所有触发的动画都会放到这个队列中,然后依次执行。在极段的时间内多次触发动画效果会导致用户不触发事件之后动画依然在执行。
解决办法是在执行动画前将该元素的动画都停止掉,该元素调用stop()方法即可。
<script>
$("button").stop().fadeIn();
script>
<style>
.box{
width: 100px;
height: 100px;
background: red;
display: none;
}
style>
<script>
$(function () {
var $btns = $("button");
$btns.eq(0).click(function () {
$(".box").stop();//清除之前动画队列中的动画
$(".box").fadeIn(1000,function () {
alert("淡入");
})
});
$btns.eq(1).click(function () {
$(".box").fadeOut(1000,function () {
alert("淡出");
})
});
$btns.eq(2).click(function () {
$(".box").fadeToggle(1000,function () {
alert("切换");
})
});
$btns.eq(3).click(function () {
$(".box").fadeTo(500,0.5,function () {
alert("淡入到");
})
});
});
script>
<body>
<button>淡入button>
<button>淡出button>
<button>切换button>
<button>淡入到button>
<div class="box">div>
body>
使用animate()方法。
第一个参数:接受一个对象,各个CSS属性以伪数组形式保存
第二个参数:指定动画的时长
第三个参数:指定动画的运动速率,默swing
第四个参数:动画执行完毕后的回调callBack
$("selector").animate({
width:500,
height:500
},1000,"linear",function(){
alert("自定义动画执行完毕,执行了回调函数");
});
代码示例:
<style>
div{
width: 100px;
height: 100px;
margin-top: 20px;
position: relative;
}
.box1{
background: red;
}
.box2{
background:blue;
}
style>
<script>
$(function () {
$("button").click(function () {
$("div").animate({
left:"+=100px"//属性的累加!
},1000,"linear",function () {
alert(this.toString()+"animate");
})
});
});
script>
<button>startbutton>
<div class="box1">div>
<div class="box2">div>
<style>
*{
padding:0;
margin:0;
}
.content{
width: 600px;
height: 150px;
margin:100px auto;
background: black;
overflow: hidden;
}
ul{
width: 3600px;
height: 100%;
position: relative;
left:0px;
}
ul>li{
width: 300px;
height: 150px;
list-style: none;
float: left;
}
ul>li:nth-child(1){
background: red;
}
ul>li:nth-child(2){
background: blue;
}
ul>li:nth-child(3){
background: yellow;
}
ul>li:nth-child(4){
background: #00ff00;
}
ul>li:nth-child(5){
background: red;
}
ul>li:nth-child(6){
background: blue;
}
style>
<script>
$(function () {
//定义偏移量
var offset = 0;
//计时函数
var timer;
function startScroll(){
timer = setInterval(function () {
offset+=-10;
if(offset<=-1200){
offset = 0;
}
$(".content>ul").css("marginLeft",offset);
},50);
}
startScroll();
//注册鼠标移入移出事件
$(".content>ul>li").hover(function () {
clearInterval(timer);
$(this).siblings().fadeTo(100,0.5);
},function () {
$(this).siblings().fadeTo(100,1);
startScroll();
});
})
script>
<body>
<div class="content">
<ul>
<li>li>
<li>li>
<li>li>
<li>li>
<li>li>
<li>li>
ul>
div>
body>
PS:希望对你有帮助,欢迎评论,求点赞,你的认可是我坚持写作的最大动力~~