jQuery是一个javascript库,核心理念是write less,do more(写得更少,做得更多),他内部帮我们把几乎所有功能都做了封装,相比上一节基于DOM、BOM操作会更加简单。
前戏
1. 快速应用
<script src="../jquery-3.5.1.js"></script>
2. DOM对象和jQuery对象
DOM对象和jQuery对象都为标签提供了各种各种功能,并且两者之间可以进行相互转换。
jquery对象[0] => Dom对象
Dom对象 => $(Dom对象)
1.选择器
选择器,直接找到某个或者某类标签
1.1 id 选择器
$('#id')
1.2 class 选择器
<div class='c1'></div>
$(".c1")
1.3 标签选择器
html代码:
<div id='i10' class='c1'>
<a>f</a>
<a>f</a>
</div>
<div class='c1'>
<a>f</a>
</div>
<div class='c1'>
<div class='c2'> </div>
</div>
<script src="../jquery-3.5.1.js"></script>
jQuery代码:
$('a'); //标签选择器,输出所有的a标签
1.4 组合选择器
jQuery代码:
$('a,.c2,#i10');
输出:
jQuery.fn.init(5) [div#i10.c1, a, a, a, div.c2, prevObject: jQuery.fn.init(1)]
1.5 层级选择器
html代码:
<div id='i10' class='c1'>
<div>
<a>hello</a>
</div>
<a>f</a>
<a>f</a>
</div>
<div class='c1'>
<a>f</a>
</div>
<div class='c1'>
<div class='c2'> </div>
</div>
<script src="../jquery-3.5.1.js"></script>
jQuery代码:
$('#i10 a'); //子子孙孙中查找
//结果:
jQuery.fn.init(3) [a, a, a, prevObject: jQuery.fn.init(1)]
$('#i10>a'); //儿子中查找
//结果:
jQuery.fn.init(2) [a, a, prevObject: jQuery.fn.init(1)]
1.6基本筛选器
html代码:
<div id='i10' class='c1'>
<div>
<a>hello</a>
</div>
<a>f2</a>
<a>f3</a>
</div>
<div class='c1'>
<a>f</a>
</div>
<div class='c1'>
<div class='c2'> </div>
</div>
<script src="../jquery-3.5.1.js"></script>
jQuery代码:
$('#i10>a:first').text();
//输出:"f2"
$('#i10>a:last').text();
//输出:"f3"
$('#i10>a:eq(1)').text();
//输出:"f3"
1.7 属性选择器
$('[alex]') 具有alex属性的所有标签
$('[alex="123"]') alex属性等于123的标签
示例:
<div id='i10' class='c1'>
<div>
<a>hello</a>
</div>
<a alex="123"></a>
<a alex="567"></a>
<a>f2</a>
<a>f3</a>
</div>
jQuery代码:
$('[alex]');
//输出:
jQuery.fn.init(2) [a, a, prevObject: jQuery.fn.init(1)]
$('[alex="123"]');
//输出:
jQuery.fn.init [a, prevObject: jQuery.fn.init(1)]
1.8 表单选择器
html代码:
<input type="text" />
<input type="button" value="ok"/>
<input type="submit" />
<script src="../jquery-3.5.1.js"></script>
jQuery代码:
$('input [type="text"]');
//输出:
jQuery.fn.init [prevObject: jQuery.fn.init(1)]
$(':text');
//输出:
jQuery.fn.init [input, prevObject: jQuery.fn.init(1)]
$(':button');
$(':submit');
1.9 表单对象属性
html代码:
<input type="text" disabled/>
<input type="button" value="ok"/>
<input type="submit" />
<script src="../jquery-3.5.1.js"></script>
jQuery代码:
$('input:disabled');
jQuery.fn.init [input, prevObject: jQuery.fn.init(1)]
$(':disabled');
jQuery.fn.init [input, prevObject: jQuery.fn.init(1)]
2.筛选器
筛选器一般用于对选择器选中的标签进行再次筛选。
<div>
<a>asdf</a>
<a>asdf</a>
<a id='i1'>asdf</a>
<a>asdf</a>
<a id='ii1'>asdf</a>
<a>asdf</a>
</div>
$('#i1').next() //下一个兄弟标签
$('#i1').nextAll() //查找当前元素之后所有的同辈元素。
$('#i1').nextUntil('#ii1') //查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止。
$('#i1').prev() //上一个兄弟标签
$('#i1').prevAll()
$('#i1').prevUntil('#ii1')
$('#i1').parent() //父标签
$('#i1').parents()
$('#i1').parentsUntil()
$('#i1').children() //所有子标签
$('#i1').siblings() //siblings 所有兄弟标签
$('#i1').find() //子孙中查找标签
$('li:eq(1)')
$('li').eq(1) //根据索引获取元素
first() //匹配的第一个标签
last() //匹配的最后一个标签
hasClass(class) //检查当前的元素是否含有某个特定的类,如果有,则返回true。
3.属性
3.1 HTML代码/文本/值
$(..).text() # 获取文本内容
$(..).text(“<a>1</a>”) # 设置文本内容
$(..).html()
$(..).html("<a>1</a>")
$(..).val()
$(..).val(..)
3.2 样式操作(CSS 类)
addClass
removeClass
toggleClass //如果存在(不存在)就删除(添加)一个类。
示例:开关
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.hidden {
display:none;
}
</style>
</head>
<body>
<input id="i1" type="button" value="开关"/>
<a>灯</a>
<script src="../jquery-3.5.1.js"></script>
<script>
/*
$('#i1').click(function(){
if($('#i1').next().hasClass('hidden')){
$('#i1').next().removeClass('hidden');
}else{
$('#i1').next().addClass('hidden');
}
})
*/
$('#i1').click(function(){
$('#i1').next().toggleClass('hidden');
})
</script>
</body>
</html>
3.3 属性操作
# 专门用于做自定义属性
$(..).attr('n')
$(..).attr('n','v')
$(..).removeAttr('n')
<input type='checkbox' id='i1' />
# 专门用于chekbox,radio
$(..).prop('checked')
$(..).prop('checked', true)
PS:
index 获取索引位置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input id="i1" type="checkbox">
<script src="../jquery-3.5.1.js"></script>
<script>
$('#i1').attr('name','hello');
console.log($('#i1').attr('name'))
$('#i1').attr('checked','checked');
$('#i1').removeAttr('checked');
$('#i1').prop('checked',true);
$('#i1').prop('checked',false);
</script>
</body>
</html>
4. 文档操作
append //内部插入
prepend //内部插入
after //外部插入
before //外部插入
remove //删除标签
empty //删除标签内部
clone //克隆
5. CSS
$('t1').css('样式名称', '样式值')
点赞:
- $('t1').append()
- $('t1').remove()
- setInterval
- clearInterval
- 透明度 1 》 0
- remove
- position
- 字体大小,位置
6. 位置
$(window).scrollTop() 获取
$('div').scrollTop() 获取
$(window).scrollTop(0) 设置
scrollLeft([val])
$('#i').offset
offset().left 指定标签在html中的坐标
offset().top 指定标签在html中的坐标
position() 指定标签相对父标签(relative)标签的坐标
<div style='relative'>
<div>
<div id='i1' style='position:absolute;height:80px;border:1px'></div>
</div>
</div>
$('i1').height() # 获取标签的高度 纯高度
$('i1').innerHeight() # 纯高度 + padding值*2
$('i1').outerHeight() # 获取边框 + 纯高度 + padding值*2
$('i1').outerHeight(true) # 获取边框 + 纯高度 + padding值*2
# 纯高度,边框,外边距,内边距
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.back {
border-radius:50%;
height:60px;
width:60px;
font-size:small;
line-height:60px;
text-align:center;
border:1px solid grey;
background-color:blue;
position:fixed;
bottom:50px;
right:50px;
}
.small {
width:200px;
height:200px;
overflow:auto;
border:1px solid red;
}
</style>
</head>
<body>
<div class="small">
<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
<p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
</div>
<div id="i1">1</div>
<div class="back">
返回顶部
</div>
<script src="../jquery-3.5.1.js"></script>
<script>
console.log($('.small').offset().top);
console.log($('.small').offset().left);
console.log($('#i1').offset().top);
$('.back').click(function(){
$(window).scrollTop(0);
console.log($('.back').offset().top);
console.log($('.back').offset().left);
});
</script>
</body>
</html>
7.事件
默认事件先执行: checkbox
自定义先执行 a submit
jQuery:
$('.c1').click()
$('.c1').....
$('.c1').on('click', function(){
})
$('.c1').off('click', function(){
})
//$('.class').on("click",function(){……});相当于$('.class').bind("click",function(){……});
//$(document).on("click",'.class',function(){……});相当于 $('.class').live("click",function(){……});
//js生成的元素绑定事件必须使用live,但新版的jq,已经淘汰了live,可以用on方法代替,但必须注意写法。
阻止事件发生
return false
# 当页面框架加载完成之后,自动执行,一般JavaScript的代码都写在里面,速度快
$(function(){
$(...)
})
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.error {
color:red;
}
</style>
</head>
<body>
<div>
<form id="f1" action="scoretop.html" method="get">
<div><input type="text" ></div>
<div><input type="password" ></div>
<div><input type="text" ></div>
<div><input type="text" ></div>
<div><input type="text" ></div>
<div><input class="deli" type="submit" ></div>
</form>
</div>
<script src="../jquery-3.5.1.js"></script>
<script>
$(function(){
$('.deli').on('click',function(){
var flag = true;
$('.error').remove();
$('#f1').find('input[type="text"],input[type="password"]').each(function(){
var v=$(this).val();
if(v.length <=0){
flag=false;
var tag = document.createElement('span');
$(tag).text('必填');
$(tag).addClass('error');
$(this).after(tag);
}
})
return flag;
})
})
</script>
</body>
</html>
8. jQuery扩展
- $.extend $.方法
- $.fn.extend $(..).方法
//自执行函数主要是引入其他代码时,封装变量用的。
(function(){
var status = 1;
// 封装变量
})(jQuery)
示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div class="i1"></div>
<script src="../jquery-3.5.1.js"></script>
<script>
$.extend({
'maria':function(){
return 'hello';
}
});
var v=$.maria();
alert(v);
$.fn.extend({
'mily':function(){
return 'hi';
}
});
var b=$('i1').mily();
alert(b);
</script>
</body>
</html>