JQuery 高级
1. 动画
1. 三种方式显示和隐藏元素
1. 默认显示和隐藏方式
1. show([speed,[easing],[fn]])
1.speed:动画的速度,三个预定义('slow','normal','fast'),或表示动画时长毫秒值
2.easing:切换效果,默认值'swing',可选参数'linear'
*swing 先慢,再快,最后慢
3.fn,function,回调函数,在动画执行完之后调用一次
2. hide([speed,[easing],[fn]])
3. toggle([speed],[easing],[fn])
2. 滑动显示和隐藏方式
1. slideDown([speed],[easing],[fn])
2. slideUp([speed,[easing],[fn]])
3. slideToggle([speed],[easing],[fn])
3. 淡入淡出显示和隐藏方式
1. fadeIn([speed],[easing],[fn])
2. fadeOut([speed],[easing],[fn])
3. fadeToggle([speed,[easing],[fn]])
< script>
function hideFn ( ) {
$ ( '#showDiv' ) . fadeOut ( 1000 ) ;
}
function showFn ( ) {
$ ( '#showDiv' ) . fadeIn ( 1000 ) ;
}
function toggleFn ( ) {
$ ( '#showDiv' ) . fadeToggle ( 1000 ) ;
}
< / script>
< body>
< input type= "button" value= "点击按钮隐藏div" onclick= "hideFn()" >
< input type= "button" value= "点击按钮显示div" onclick= "showFn()" >
< input type= "button" value= "点击按钮切换div显示和隐藏" onclick= "toggleFn()" >
< div id= "showDiv" style= "width:300px;height:300px;background:pink" >
div显示和隐藏
< / div>
< / body>
2. 遍历
1.js for(初始化值;结束循环条件;步长)
2.jq
1.jq对象.each(function(索引,元素){})
this 表示每个元素对象
回调函数返回值: function返回false 结束循环(break)
function返回true 结束本次循环,继续下次循环(continue)
2.$.each(function)
3.for(元素 of 容器对象) 3.0版本以后使用
< script>
$( function ( ) {
var cities = $( '#city li' ) ;
for ( li of cities) {
alert ( li. innerHTML) ;
}
} )
< / script>
< body>
< ul id= "city" >
< li> 北京< / li>
< li> 上海< / li>
< li> 天津< / li>
< li> 重庆< / li>
< / ul>
< / body>
3. 事件绑定
1.jq的标准事件绑定方式
jq对象.事件方法(回调函数)
当回调函数为空的时候,会触发浏览器默认行为
focus() submit()提交表单
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> < / title>
< script src= "../js/jquery-3.3.1.js" > < / script>
< script>
$( function ( ) {
$( '#name' ) . focus ( function ( ) {
console. log ( 1 ) ;
} ) ;
} )
< / script>
< / head>
< body>
< input id= "name" type= "text" value= "绑定点击事件" >
< / body>
< / html>
2.on绑定事件/off解除绑定
jq对象.on('事件名称', 回调函数)
jq对象.off('事件名称') 当不写参数的时候,解除所有事件
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> < / title>
< script src= '../js/jquery-3.3.1.js' > < / script>
< script type= "text/javascript" >
$( function ( ) {
$( '#btn' ) . on ( 'click' , function ( ) {
alert ( '点击了' ) ;
} ) ;
$( '#btn2' ) . click ( function ( ) {
$( '#btn' ) . off ( ) ;
} ) ;
} )
< / script>
< / head>
< body>
< input id= "btn" type= "button" value= "使用on绑定点击事件" >
< input id= "btn2" type= "button" value= "使用off解绑点击事件" >
< / body>
< / html>
3.事件切换
jq对象.toggle(fn1, fn2,.....) 依次执行(可循环)参数函数
从1.9版本之后,jq不在支持toggle 所以要用migrate(迁移)插件回复此功能
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> < / title>
< script src= "../js/jquery-3.3.1.js" > < / script>
< script src= "../js/jquery-migrate-1.0.0.js" > < / script>
< script>
$( function ( ) {
$( '#btn' ) . toggle ( function ( ) {
$( '#myDiv' ) . css ( 'backgroundColor' , 'green' ) ;
} , function ( ) {
$( '#myDiv' ) . css ( 'backgroundColor' , 'red' ) ;
} ) ;
} )
< / script>
< / head>
< body>
< input id= "btn" type= "button" value= "事件切换" >
< div id= "myDiv" style= "width:300px;height:300px;background:pink" >
点击按钮变成绿色,再次点击红色
< / div>
< / body>
< / html>
4. 插件:增强JQuery的功能
1.实现方式:
1. $.fn.extend(对象)
增强jq对象的功能 $('#id').新功能();
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> 对象进行方法扩展< / title>
< ! -- $( '#btn' ) . demo1 ( ) -- >
< script src= "../js/jquery-3.3.1.js" > < / script>
< script>
$. fn. extend ( {
check: function ( ) {
this . prop ( 'checked' , true ) ;
} ,
uncheck: function ( ) {
this . prop ( 'checked' , false ) ;
}
} ) ;
$( function ( ) {
$( '#btn-check' ) . click ( function ( ) {
$( 'input[type="checkbox"]' ) . check ( ) ;
} ) ;
$( '#btn-uncheck' ) . click ( function ( ) {
$( 'input[type="checkbox"]' ) . uncheck ( ) ;
} ) ;
} )
< / script>
< / head>
< body>
< input id= "btn-check" type= "button" value= "点击选中复选框" onclick= "checkFn()" >
< input id= "btn-uncheck" type= "button" value= "点击取消复选框选中" onclick= "uncheckFn()" >
< br/ >
< input type= "checkbox" value= "football" > 足球
< input type= "checkbox" value= "basketball" > 篮球
< input type= "checkbox" value= "volleyball" > 排球
< / body>
< / html>
2. $.extend(对象)
$.新功能();
< ! DOCTYPE html>
< html>
< head>
< meta charset= "UTF-8" >
< title> 方法扩展< / title>
< script src= "../js/jquery-3.3.1.js" > < / script>
< script>
$. extend ( {
max: function ( a, b) {
return a >= b ? a : b;
} ,
min: function ( a, b) {
return a <= b ? a : b;
}
} )
var max = $. max ( 4 , 5 ) ;
var min = $. min ( 4 , 5 ) ;
alert ( min) ;
< / script>
< / head>
< body>
< / body>
< / html>