1.事件:用户触发或浏览器自动触发:
绑定:$("XX").bind("事件名",callback);
简化:$("XX").事件名(callback);
面试题:原生JS中window.onload:和JQz中$(document).ready(callback)有什么区别
1、window.onload:等待所有的资源加载完毕后,最后执行,而且一个页面智能使用一次
2、$(document).ready(callback):等待DOM树加载完毕后就会执行,理论上比前者效率更高,而且一个页面可以反复使用
简写:1、$(document).ready(()=>{})
2、$().ready(()=>{})
3、$(()=>{})
原来学过的事件:click、dblclick、mouseover/mouseenter(移入,不会触发冒泡)、mouseout/mouseleave(移出,不会触发冒泡)、mousemove、change、blur、focus、submit、input(只要用户输入就会触发)、contextmenu、resize、keydown
未学过的事件:
1、mousedown(鼠标按下)、mouseup(鼠标松开)
2、keydown、keypress、keyup -键盘事件:
$(window).键盘事件(callback);
keydown:按下和按住都会触发,任何按键都支持
keypress:按下和按住都会触发,支持数字+字母+回车+空格
keyup:松开时才触发,任何按键都支持
event事件对象:jQuery没有任何简化操作
键盘键码:e.keyCode;
3、scroll -滚动监听事件:
绑定事件:$(window).scroll(()=>{
1、$(window).scrollTop(); //获取当前滚动条距离页面顶部有多远
2、$("xx").offset().top; //获取某个元素距离页面顶部有多远
3、越往下滚,出现数据越多
})
2.JQ动画:
1.预定义动画:3组:9个
1.隐藏和显示:
隐藏:$("XX").hide(执行时间,callback)
显示:$("XX").show(执行时间,callback)
特殊:1、如果没有传递任何参数。瞬间的显示和隐藏
如果传递了时间参数,会具有动画(同时修改宽高度、透明度)
2、callback是动画执行完毕后才会执行的代码操作
3、组合用法:自带判断操作:
$("XX").toggle(执行时间,callback)===show+hide
2.滑动效果:
隐藏:$("XX").slideUP(执行时间,callback)
显示:$("XX").slideDown(执行时间,callback)
特殊:1.哪怕不加时间也具有动画,只不过动画比较快(修改高度)
2、callback是动画执行完毕后才会执行的代码操作
3.组合用法:自带判断操作:
$("XX").slideToggle(执行时间,callback)===slideDown+slideUp
3.淡入淡出:
淡入/隐藏:$("xx").fadeOut(执行时间,callback)
淡入/显示:$("XX").fadeln(执行时间,callback)
特殊:1、哪怕不加时间也具有动画,只不过动画比较快(修改透明度)
2、callback是动画执行完毕才会执行的代码操作
3、组合用法:自带判断操作:
$("xx").fadeToggle(执行时间,callback) === fadeIn+fadeOut
2.自定义动画:
1.并发动画:所有的动画一起执行
$("XX").animate({
"css属性名":"css属性值",
....
},执行时间,callback)
2.排队动画:一个动画做完在做下一个
$("XX").animate({
"css属性名":"css属性值",
},执行时间,callback).animate({
"css属性名":"css属性值",
},执行时间,callback).animate({
"css属性名":"css属性值",
},执行时间,callback).animate({
"css属性名":"css属性值",
},执行时间,callback).animate({
"css属性名":"css属性值",
},执行时间,callback)
特殊:
1.animate方法不支持颜色、transform转换的动画
2.动画会排队,如果快速的触发动画,会排上很多动画慢慢执行,可用stop();
扩展:
1、如何判断某个元素有没有动画
if(!$("XX").is(":animated")){没有动画的元素才执行}
2、if(!$("XX").is(":hidden")){没有隐藏的元素才执行}