JQuery介绍
一、引入方式
<script src='https://cdn.bootcss.com/jquery/3.3.1/jquery.js'></script>
<script src="jquery-3.3.1.min.js"></script>
<script>
</script>
# 文档加载顺序
1、解析HTML结构
2、加载外部脚本和样式表文件
3、解析并执行脚本代码
4、DOM书构建完成
5、加载图片等外部文件
6、页面加载完毕
# 等待文档加载完毕后执行函数,有两种方式
1、$(window).onload(function(){})
--页面加载完毕后执行
--只能执行一个
2、$(document).ready(function(){}) = $(function(){})
--DOM构建完毕执行
--可以书写多个
二、基本使用
1、jQuery对象
jQuery('.box') = $('.box') # 找到class属性中有box的标签
$('<p>') # 创建p标签
# 可以链式调用
$('#d1').css('color','red').next().css('color','green')
# jQueryDom和jsDom
1、Js DOM对象 ==> JQ DOM对象
--$(js DOM对象) # 例如 $(box)
2、JQ DOM对象 ==> JS DOM对象
--$("选择器")[0] # 或者$("选择器").get(0)
2、选择器
# id选择器:
$("#id")
# 标签选择器:
$("tagName")
# class选择器:
$(".className")
# 所有元素选择器:
$("*")
# 交集选择器:
$("div.c1")
# 并集选择器:
$("#id, .className, tagName")
# 层级选择器:x和y可以为任意选择器
$("x y");
$("x > y");
$("x + y")
$("x ~ y")
# 基本筛选器
:first
:last
:eq(index)
:even
:odd
:gt(index)
:lt(index)
:not(选择器)
:has(选择器)
$('div:first')
# 补充
.first()
.last()
.not()
.has()
.eq()
# 属性选择器
[attribute]
[attribute=value]
[attribute!=value]
$("input[type='checkbox']");
$("input[type!='text']");
# 表单筛选器
:text
:password
:file
:radio
:checkbox
:submit
:reset
:button
$(':text') = $('input[type="text"]')
$(':password') = $('input[type="password"]')
# 表单对象属性
:enabled
:disabled
:checked
:selected
"""特殊情况"""
$(':checked') # 它会将checked和selected都拿到
$(':selected') # 它不会 只拿selected
$('input:checked') # 自己加一个限制条件
# 筛选器方法
$('#d1').next() # 同级别下一个
$('#d1').nextAll() # 同级后面所有
$('#d1').nextUntil('.c1') # 同级后面,不包括自己,不包括最后一个
$('.c1').prev() # 同级别上一个
$('.c1').prevAll() # 同级别上面所有
$('.c1').prevUntil('#d2') # 同级前面,不包括自己,不包括最后一个,索引倒序排列
$('#d3').parent() # 第一级父标签
$('#d3').parents() # 所有父标签
$('#d3').parentsUntil('body') # 所有父标签,直到body之前
$('#d2').children() # 所有儿子标签,不包括文本
$('#d2').siblings() # 同级别上下所有标签
$('div p') = $('div').find('p') # find从某个区域内筛选出想要的标签
3、标签的样式操作
# 类属性操作
# js版本 # jQuery版本
classList.add() addClass()
classList.remove() removeClass()
classList.contains() hasClass()
classList.toggle() toggleClass()
# css样式操作
<p>111</p>
<p>222</p>
"""一行代码将第一个p标签变成红色,第二个p标签变成绿色"""
$('p').first().css('color','red').next().css('color','green')
# jQuery的链式操作 使用jQuery可以做到一行代码操作很多标签
# jQuery对象调用jQuery方法之后返回的还是当前jQuery对象 也就可以继续调用其他方法
# 位置操作
offset() # 标签相对于浏览器窗口的位置
position() # 相对于父标签
scrollTop() # 当前滚动条与整个页面顶部的距离
scrollLeft() # 当前滚动条与整个页面左侧的距离
$(window).scrollTop() # 括号内不加参数就是获取
$(window).scrollTop(0) # 加了参数就是设置
# 尺寸
$('p').height() # 文本
20
$('p').width()
1670
$('p').innerHeight() # 文本+padding
26
$('p').innerWidth()
1674
$('p').outerHeight() # 文本+padding+border
26
$('p').outerWidth()
1674
4、标签操作之文本样式操作
# html()是获取选中标签元素中所有的内容
# html(val)设置值:设置该元素的所有内容 会替换掉 标签中原来的内容
$('ul').html('<a href="#">百度一下</a>')
text()
text(val)
# 注意:值为标签的时候 不会被渲染为标签元素 只会被当做值渲染到浏览器中
# 获取值操作
$('#d1').val() # 不加参数是获取
"sasdasdsadsadad"
$('#d1').val('520快乐') # 加参数就是设置
5、标签的属性操作
# 对于标签上有的能够看到的属性和自定义属性用attr,对于返回布尔值比如checkbox radio option是否被选中用prop
prop('value')
prop('checked',true);
removeProp('value')
$('#d2').prop('checked')
false
$('#d2').prop('checked')
true
$('#d3').prop('checked',true)
w.fn.init [input#d3]
$('#d3').prop('checked',false)
w.fn.init [input#d3]
6、标签的文档处理
"""
js jQuery
createElement('p') $('<p>')
appendChild() append()
"""
let $pEle = $('<p>')
$pEle.text('你好啊 草莓要不要来几个?') # 设置文本内容
$pEle.attr('id','d1') # 增加属性
$('#d1').append($pEle) = $pEle.appendTo($('#d1')) # 内部尾部追加
$('#d1').prepend($pEle) = $pEle.prependTo($('#d1')) # 内部头部插入
$('#d2').after($pEle) = $pEle.insertAfter($('#d1')) # 放在某个标签后面,同级别
$('#d1').before($pEle) = $pEle.insertBefore($('#d2')) # 放在某个标签前面,同级别
$('#d1').remove() # 将标签从DOM树中删除
w.fn.init [div#d1]
$('#d1').empty() # 清空标签内部所有的内容
w.fn.init [div#d1]
7、事件
$('#d1').click(function () {
alert('别说话 吻我')
});
$('#d2').on('click',function () {
alert('借我钱买草莓 后面还你')
})
7、1 克隆事件
<button id="d1">屠龙宝刀,点击就送</button>
<script>
$('#d1').on('click',function () {
$(this).clone(true).insertAfter($('body'))
})
</script>
7、2 input实时监控
<input type="text" id="d1">
<script>
$('#d1').on('input',function () {
console.log(this.value)
})
</script>
7、3 鼠标悬浮事件
<script>
$('#d1').hover(
function () {
alert('我来了')
},
function () {
alert('我溜了')
}
)
</script>
7、4 鼠标按键按下事件
<script>
$(window).keydown(function (event) {
console.log(event.keyCode)
if (event.keyCode === 16){
alert('你按了shift键')
}
})
</script>
8、阻止标签后续事件执行
<script>
$('#d2').click(function (e) {
$('#d1').text('宝贝 你能看到我吗?')
return false
})
</script>
9、阻止事件冒泡
<script>
$('#d1').click(function () {
alert('div')
})
$('#d2').click(function () {
alert('p')
})
$('#d3').click(function (e) {
alert('span')
return false
})
</script>
10、事件委托
<button>是兄弟,就来砍我!!!</button>
<script>
$('body').on('click','button',function () {
alert(123)
})
</script>
11、动画效果
$('#d1').hide(5000)
w.fn.init [div#d1]
$('#d1').show(5000)
w.fn.init [div#d1]
$('#d1').slideUp(5000)
w.fn.init [div#d1]
$('#d1').slideDown(5000)
w.fn.init [div#d1]
$('#d1').fadeOut(5000)
w.fn.init [div#d1]
$('#d1').fadeIn(5000)
w.fn.init [div#d1]
$('#d1').fadeTo(5000,0.4)
w.fn.init [div#d1]
12、each方法
# each()
# 第一种方式
$('div')
w.fn.init(10) [div, div, div, div, div, div, div, div, div, div, prevObject: w.fn.init(1)]
$('div').each(function(index){console.log(index)})
VM181:1 0
VM181:1 1
VM181:1 2
VM181:1 3
VM181:1 4
VM181:1 5
VM181:1 6
VM181:1 7
VM181:1 8
VM181:1 9
$('div').each(function(index,obj){console.log(index,obj)})
VM243:1 0 <div>1</div>
VM243:1 1 <div>2</div>
VM243:1 2 <div>3</div>
VM243:1 3 <div>4</div>
VM243:1 4 <div>5</div>
VM243:1 5 <div>6</div>
VM243:1 6 <div>7</div>
VM243:1 7 <div>8</div>
VM243:1 8 <div>9</div>
VM243:1 9 <div>10</div>
# 第二种方式
$.each([111,222,333],function(index,obj){console.log(index,obj)})
VM484:1 0 111
VM484:1 1 222
VM484:1 2 333
(3) [111, 222, 333]
# 有了each之后 就无需自己写for循环了 用它更加的方便
# data()
# 能够让标签帮我们存储数据 并且用户肉眼看不见
$('div').data('info','回来吧,我原谅你了!')
w.fn.init(10) [div#d1, div, div, div, div, div, div, div, div, div, prevObject: w.fn.init(1)]
$('div').first().data('info')
"回来吧,我原谅你了!"
$('div').last().data('info')
"回来吧,我原谅你了!"
$('div').first().data('xxx')
undefined
$('div').first().removeData('info')
w.fn.init [div#d1, prevObject: w.fn.init(10)]
$('div').first().data('info')
undefined
$('div').last().data('info')
"回来吧,我原谅你了!"