一、jq简介
jQuery内部封装了原生的js代码(还额外添加了很多的功能),能够通过书写更少的代码 完成js操作 ,类似于python里面的模块 在前端模块不叫模块 叫 “类库”,兼容多个浏览器的 ,在使用jQuery的时候就不需要考虑浏览器兼容问题
jQuery文件下载,压缩后的容量更小,未压缩的是源码
1 文件下载到了本地 如何解决多个文件反复书写引入语句的代码
可以借助于pycharm自动初始化代码功能完成自动添加 :配置=>编辑=>file and code template
2、直接引入jQuery提供的CDN服务(基于网络直接请求加载)
CDN:内容分发网络
CDN有免费的也有收费的
前端免费的cdn网站:bootcdn
缺点:计算机要有网络
src="https://cdn.bootcdn.net/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
pycharm自动导入
jq的基本语法
jQuery(属性).action() // 简写 jQuery写成$ $(属性).action() //代码对比 //js let pEle = document.getElementById('d1') pEle.style.color = 'red' // jQuery操作标签 $('p').css('color','blue')
二、选择器
1、基本选择器
// id选择器 $('#d1').css('color','red') // class选择器 $('.d1').css('color','red') // 标签选择器 $('div').css('color','red') //注意 // jQuery对象如何变成标签对象 $('#d1')[0] <div id="d1">…</div> document.getElementById('d1') <div id="d1">…</div> // 标签对象如何转jQuery对象 $(document.getElementById('d1')) w.fn.init [div#d1]
2、组合选择器
// 标签 $('div') // 类为c1的div $('div.c1') //id为d1的div $('div#d1') // 可以拿到所有的,html head·····,一般不使用 $('*') $('#d1,.c1,p') // 并列+混用 // [div#d1, p#d2, div.c1, prevObject: w.fn.init(1)] // 后代 $('div span') //w.fn.init(3) [span, span, span, prevObject: w.fn.init(1)] //儿子 $('div>span') //w.fn.init(2) [span, span, prevObject: w.fn.init(1)] //毗邻 $('div+span') //w.fn.init [span, prevObject: w.fn.init(1)] //弟弟 $('div~span') //w.fn.init(2) [span, span, prevObject: w.fn.init(1)]
3、基本筛选器
// 获取所有的li $('ul li') //获取第一个li $('ul li:first') //获取最后一个li $('ul li:last') // 获取索引为2的li $('ul li:eq(2)') // 获取偶数的li $('ul li:even') // 获取奇数的li $('ul li:odd') // 大于,获取索引大于2的li $('ul li:gt(2)') // 小于索引 获取索引小于2的li $('ul li:lt(2)') //移除满足条件的标签 $('ul li:not("#d1")') $('div') w.fn.init(2) [div, div, prevObject: w.fn.init(1)] // 选取出包含一个或多个标签在内的标签 $('div:has("p")') w.fn.init [div, prevObject: w.fn.init(1)]
属性选择器
$('[username]') $('[username="jason"]') $('p[username="egon"]') $('[type]') $('[type="text"]')
3、表单选择器
$('input[type="text"]') $('input[type="password"]') $(':text') //简写 等价于上面第一个 $(':password') //简写 等价于上面第二个 :text :password :file :radio :checkbox :submit :reset :button ... 表单对象属性 :enabled :disabled :checked :selected //注意注意 $(':checked') // 它会将checked和selected都拿到 $(':selected') // 它不会 只拿selected $('input:checked') // 自己加一个限制条件
4、筛选器方法
//同级别下一个 $('#d1').next() //拿到所有的 $('#d1').nextAll() //不包括最后一个 从id为1到c1 $('#d1').nextUntil('.c1') // 上一个 $('.c1').prev() //所有的 $('.c1').prevAll() //不包括最后一个 $('.c1').prevUntil('#d2') // 第一级父标签,可以一直查,直到document就没有了 $('#d3').parent() $('#d3').parent().parent() $('#d3').parent().parent().parent() $('#d3').parent().parent().parent().parent() $('#d3').parent().parent().parent().parent().parent() // 直接查所有的父亲,只到html $('#d3').parents() $('#d3').parentsUntil('body') // 儿子 $('#d2').children() // 同级别上下所有 $('#d2').siblings() // find从某个区域内筛选出想要的标签 这两个相等 $('div p') $('div').find('p') """下述两两等价""" $('div span:first') $('div span').first() $('div span:last') $('div span').last() $('div span:not("#d3")') $('div span').not('#d3')
三、操作标签
js操作类 jQuery操作类
classList.add() addClass()
classList.remove() removeClass()
classList.contains() hasClass()
classList.toggle() toggleClass()
1、样式操作
jQuery的链式操作:使用jQuery可以做到一行代码操作很多标签
jQuery对象调用jQuery方法之后返回的还是当前jQuery对象,也就可以继续调用其他方法
<p>111</p> <p>222</p> $('p').first().css('color','red').next().css('color','green')
2、位置操作
offset() // 相对于浏览器窗口 position() // 相对于父标签 scrollTop() //滚动屏幕 $(window).scrollTop() // 括号内不加参数就是获取 $(window).scrollTop(0) // 加了参数就是设置 $(window).scrollTop(500) scrollLeft()
尺寸
$('p').height() // 文本 $('p').width() $('p').innerHeight() // 文本+padding $('p').innerWidth() $('p').outerHeight() // 文本+padding+border $('p').outerWidth()
3、文本操作
innerText text() 括号内不加参数就是获取加了就是设置
innerHTML html()
$('div').text('离离原上草') $('div').html('离离原上草') // 无法识别html标签 $('div').text('<h1>离离原上草</h1>') // 可以识别html标签 $('div').html('<h1>离离原上草</h1>')
获取值操作,对应input框
js :.value
jQuery:.val()
$('#d1').val() $('#d1').val('520快乐') // 括号内不加参数就是获取加了就是设置 $('#d2')[0].files[0] //拿到文件对象需要转换为js
4、属性操作
js中: jQuery:
setAttribute() attr(name,value)
getAttribute() attr(name)
removeAttribute() removeAttr(name)
在用变量存储对象的时候 js中推荐使用
XXXEle 标签对象
jQuery中推荐使用
$XXXEle jQuery对象
let $pEle = $('p') $pEle.attr('id') // 获取"d1" $pEle.attr('class') $pEle.attr('class','c1') $pEle.attr('id','id666') // 添加 $pEle.attr('password','jason123') // 添加 $pEle.removeAttr('password') //移除 //对于标签上有的能够看到的属性和自定义属性用attr,对于返回布尔值比如checkbox radio option是否被选中用prop $('#d2').prop('checked') $('#d2').prop('checked') $('#d3').prop('checked',true) // 设置值,会自动选中 $('#d3').prop('checked',false)
5、文档处理
js jQuery
createElement('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')) // 将标签从DOM树中删除 $('#d1').remove() // 清空标签内部所有的内容 $('#d1').empty()
四、jQuery事件
1、绑定事件
// 第一种 $('#d1').click(function () { alert('hello') }); // 第二种(功能更加强大 还支持事件委托) $('#d2').on('click',function () { alert('hello') })
克隆事件
<button id="d1">点我点我点我</button> <script> $('#d1').on('click',function () { // console.log(this) // this指代是当前被操作的标签对象 // $(this).clone().insertAfter($('body')) // clone默认情况下只克隆html和css 不克隆事件 $(this).clone(true).insertAfter($('body')) // 括号内加true即可克隆事件 }) </script>
左侧菜单栏
<script> $('.title').click(function () { // 先给所有的items加hide $('.items').addClass('hide') // 然后将被点击标签内部的hide移除 $(this).children().removeClass('hide') }) </script>
2、阻止后续事件执行
<script> $('#d2').click(function (e) { $('#d1').text('how are you?') // 阻止标签后续事件的执行 方式1 // return false // 阻止标签后续事件的执行 方式2 // e.preventDefault() }) </script>
3、阻止事件冒泡
<script> $('#d1').click(function () { alert('div') }) $('#d2').click(function () { alert('p') }) $('#d3').click(function (e) { alert('span') // 阻止事件冒泡的方式1 // return false // 阻止事件冒泡的方式2 // e.stopPropagation() }) </script>
4、事件委托
<button>点我</button> <script> // 给页面上所有的button标签绑定点击事件 // $('button').click(function () { // 无法影响到动态创建的标签 // alert(123) // }) // 事件委托 $('body').on('click','button',function () { alert(123) // 在指定的范围内 将事件委托给某个标签 无论该标签是事先写好的还是后面动态创建的 }) </script>
5、页面加载
// 等待页面加载完毕再执行代码 window.onload = function(){ // js代码 } """jQuery中等待页面加载完毕""" // 第一种 $(document).ready(function(){ // js代码 }) // 第二种 $(function(){ // js代码 }) // 第三种 """直接写在body内部最下方"""
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY