jquery介绍

萝らか妹 提交于 2019-11-30 07:57:52

jquery介绍

jquery的优势
1.js代码对浏览器的兼容性做的更好了
2.隐式循环
3.链式操作
jquery是什么?
高度封装了js代码的模块
    封装了dom节点
    封装了操作dom节点的简便方法
jquery的导入
https://code.jquery.com/jquery-3.4.1.js 未压缩版
https://code.jquery.com/jquery-3.4.1.min.js 压缩版
下载:保存在本地文件里
引入:<script src="jquery3.4.1.min.js"></script>
$和jQuery的关系
$就是jQuery名字的简写,实际上是一回事儿
jquery对象和dom对象的关系和转换
jquery封装了dom
dom转成jquery : jQuery(dom对象)  $(dom对象)
jquery转成dom : jq对象[index]

jquery选择器

基础选择器
#id选择器   .类选择器  标签选择器   *通用选择器
$('#city')
k.fn.init [ul#city]0: ul#citylength: 1__proto__: Object(0)
$('.box')
k.fn.init [div.box, prevObject: k.fn.init(1)]0: div.boxlength: 1prevObject: k.fn.init [document]__proto__: Object(0)
$('li')
k.fn.init(4) [li, li, li, li, prevObject: k.fn.init(1)]0: li1: li2: li3: lilength: 4prevObject: k.fn.init [document]__proto__: Object(0)
$('a')
k.fn.init(2) [a, a, prevObject: k.fn.init(1)]0: a1: alength: 2prevObject: k.fn.init [document]__proto__: Object(0)
$('*')
k.fn.init(16) [html, head, meta, title, body, div.box, ul#city, li, li, a, li, a, li, p, script, script, prevObject: k.fn.init(1)]

div.c1交集选择器      div,p并集选择器
$('div.box')
k.fn.init [div.box, prevObject: k.fn.init(1)]0: div.boxlength: 1prevObject: k.fn.init [document]__proto__: Object(0)
$('div,p,a')
k.fn.init(4) [div.box, a, a, p, prevObject: k.fn.init(1)]                           
层级选择器
空格 后代选择器    >子代选择器 +毗邻选择器  ~弟弟选择器
$('div li')
$('div>ul>li')
$('.baidu+li')
k.fn.init [prevObject: k.fn.init(1)]
$('.baidu~li')
k.fn.init(3) [li, li, li, prevObject: k.fn.init(1)]
属性选择器
$('[属性名]')         必须是含有某属性的标签
$('a[属性名]')        含有某属性的a标签
$('选择器[属性名]')    含有某属性的符合前面选择器的标签
$('选择器[属性名="aaaa"]')  属性名=aaa的符合选择器要求标签
$('选择器[属性名$="xxx"]')  属性值以xxx结尾的
$('选择器[属性名^="xxx"]')  属性值以xxx开头的
$('选择器[属性名*="xxx"]')  属性值包含xxx
$('选择器[属性名1][属性名2="xxx]')  拥有属性1,且属性二的值='xxx',符合前面选择器要求的

jquery筛选器

基础筛选器
$('选择器:筛选器')
$('选择器:first')
作用于选择器选择出来的结果
first      找第一个
last       最后一个
eq(index)  通过索引找
even       找偶数索引
odd        找奇数索引
gt(index)  大于某索引的
lt(index)  小于某索引的
not(选择器) 不含 符合选择器 要求的
has(选择器) 后代中含有该选择器要求的(找的不是后代,找的是本身)
表单筛选器
type筛选器
$(':text')
$(':password')
$(':radio')
$(':checkbox')
$(':file')
$(':submit')
$(':reset')
$(':button')
注意 : date type的input是找不到的
状态筛选器
enabled
disabled
checked
selected

$(':disabled')
jQuery.fn.init [input, prevObject: jQuery.fn.init(1)]
$(':enabled')
jQuery.fn.init(15) [input, input, input, input, input, input, input, input, input, input, input, select, option, option, option, prevObject: jQuery.fn.init(1)]
$(':checked')
jQuery.fn.init(4) [input, input, input, option, prevObject: jQuery.fn.init(1)]
$(':selected')
$(':checkbox:checked')
jQuery.fn.init(2) [input, input, prevObject: jQuery.fn.init(1)]
$('input:checkbox:checked')
jQuery.fn.init(2) [input, input, prevObject: jQuery.fn.init(1)]

jquery的筛选器方法

找兄弟 :$('ul p').siblings()
找哥哥
$('ul p').prev()             找上一个哥哥
$('ul p').prevAll()          找所有哥哥
$('ul p').prevUntil('选择器') 找哥哥到某一个地方就停了
找弟弟 : next()  nextAll()   nextUntil('选择器')
找祖宗 : parent()  parents()   parentsUntil('选择器')
找儿子 : children()
筛选方法
first()
last()
eq(index)
not('选择器')   去掉满足选择器条件的
filter('选择器')交集选择器,在所有的结果中继续找满足选择器要求的
find('选择器')  后代选择器 找所有结果中符合选择器要求的后代
has('选择器')   通过后代关系找当代 后代中有符合选择器要求的就把当代的留下

补充内容

// 1.不要用for(i in li_list){}的方式循环一个jq对象
for(let i=0;i<li_list.length;i++){   //let 声明的变量的作用域只在for循环中
        console.log(i)
}

jquery介绍

引入:
<script src='路径'></script>
jquery是一个对js操作dom对象进行了高度封装的库
查找标签\操作标签(操作属性\文本)
jQuery的本质就是一个类,简写就是$
如何创建jquery对象 :
   $('选择器')
   $(dom对象)
使用 :
    对象.方法名
    对象.属性
jq->dom
    jq[index]
dom->jq
    $(dom对象)

查找标签

选择器
基础选择器 : # . 标签名 *  div.c1交集  div,p并集
层级选择器 : 空格(后代) >(子代) +(毗邻) ~(弟弟)
属性选择器 : [属性名]  [属性名="属性值"] [属性名^="开头"] [属性名$="结尾"] [属性名*="包含"] 
           [属性名!="不等于"]
筛选器
基础筛选器 :first last eq(index) even(偶数) odd(奇数) gt(index)大于 lt(index)小于 
          not('选择器')不等于  has('选择器')如果有后代满足选择器要求就把当代选出来
表单筛选器 :text password radio checkbox file reset submit button
          checked selected disabled enabled
筛选器方法
兄弟: siblings() 
找弟弟:next(),nextAll(),nextUntil('选择器')
找哥哥:prev(),prevAll(),prevUntil('选择器')
找祖辈:parent(),parents(),parentsUntil('选择器')
找儿子:children()
筛选 :first() last() eq(index) 
     not('选择器')
     filter('交集')
     find('后代')
     has('拥有后代的当代')

事件的绑定
jquery操作标签
    操作文本 : <>文本内容<>
    操作标签 : 添加 删除 修改 克隆 
    操作属性 : 通用属性 类 css样式 value 盒子模型 滚动条  

事件的绑定

<body>
    <button>点击1</button>
    <button>点击2</button>
</body>

<script src="jquery.3.4.1.js"></script>
<script>
    $('button').click(
        function () {
            alert('你点了我一下!')
        }
    )
</script>

标签的文本操作

text()
$('li:first').text()         // 获取值
$('li:first').text('wahaha') // 设置值

$('li:last').html()          // 获取值
$('li:last').html('qqxing')  // 设置值

$('li:first').html('<a href="http://www.mi.com">爽歪歪</a>')   //a标签

var a = document.createElement('a')
a.innerText = '我是AD钙'
$('li:last').html(a)     //a 是dom对象

var a2 = document.createElement('a')
var jqobj = $(a2)
jqobj.text('乳娃娃')
$('li:last').html(jqobj)   //jqobj是jquery对象

标签的操作

增加
父子关系:
    追加儿子 :(父).append(子) (子).appendTo(父)
    头部添加 :(父).prepend(子) (子).prependTo(父)
兄弟关系:
    添加哥哥 :参考点.before(要插入的)     要插入的.insertbefore(参考点)
    添加弟弟 :参考点.after(要插入的)      要插入的.insertAfter(参考点)
如果被添加的标签原本就在文档树中,就相当于移动
例子append
    var li = document.createElement('li')
    var jq = $(li).text('张艺兴')
    $('ul').append(jq)
    
    var li = document.createElement('li')
    var jq = $(li).text('张艺兴')
    $('ul').append(jq[0])
   
    var li = document.createElement('li')
    var jq = $(li).text('张艺兴')
    $('ul').append('<li>鹿晗</li>')
    
例子appendTo
    var li = document.createElement('li')
    var jq = $(li).text('张艺兴')
    jq.appendTo('ul')
    
    var dom_ul = document.getElementsByTagName('ul')[0]
    var li = document.createElement('li')
    var jq = $(li).text('张艺兴')
    jq.appendTo(dom_ul)
    
    var li = document.createElement('li')
    var jq = $(li).text('张艺兴')
    jq.appendTo($('ul'))
   
对已经存在的内容进行添加 -- 移动
   $('li:first').appendTo('ul')
$('li:last').prependTo('ul')
$('ul').prepend('<li>李东宇</li>')
$('<li>邓帅</li>').prependTo('ul')
$('#l2').before('<li>李东宇</li>')
$('<li>李东宇222</li>').insertBefore('#l2')

$('#l2').after('<li>邓帅</li>')
$('<li>邓帅222</li>').insertAfter('#l2')
删除 修改 克隆
删除 : remove detach empty
remove : 删除标签和事件,被删掉的对象做返回值
detach : 删除标签,保留事件,被删掉的对象做返回值
empty : 清空内容标签,自己被保留

修改 : replaceWith replaceAll
replaceWith : a.replaceWith(b)  用b替换a
replaceAll : a.replaceAll(b)    用a替换b

复制 : clone
var btn = $(this).clone()      //克隆标签但不能克隆事件
var btn = $(this).clone(true)  //克隆标签和事件
var obj = $('button').remove()
obj是button标签,但是事件已经被删除了

var  a = document.createElement('a')
a.innerText = 'wahaha'
$(a).replaceAll('p')
$('p').replaceWith(a)

标签的属性操作

通用属性
attr
获取属性的值
$('a').attr('href')
设置/修改属性的值
$('a').attr('href','http://www.baidu.com')
设置多个属性值
$('a').attr({'href':'http://www.baidu.com','title':'baidu'})

removeAttr
$('a').removeAttr('title') //删除title属性
如果一个标签只有true和false两种情况,适合用prop处理
$(':checkbox:checked').prop('checked') //获取值
$(':checkbox:checked').prop('checked',false) //表示取消选中
如果设置/获取的结果是true表示选中,false表示取消选中

类的操作

添加类   addClass
$('div').addClass('red')        //添加一个类
$('div').addClass('red bigger') //添加多个类

删除类   removeClass
$('div').removeClass('bigger')  //删除一个类
$('div').removeClass('red bigger')

转换类   toggleClass             //有即删 无即加
$('div').toggleClass('red')      
$('div').toggleClass('red bigger')

value值的操作

$(input).val()
$(':text').val('值')
$(':password').val('值')

对于选择框 : 单选 多选 下拉选择
设置选中的值需要放在数组中 : 
    $(':radio').val([1])
    $(':radio').val([1,2,3])

css样式

css('样式名称','值')
css({'样式名1':'值1','样式名2':'值2'})

$('div').css('background-color','red')           //设置一个样式
$('div').css({'height':'100px','width':'100px'}) //设置多个样式

滚动条

scrollTop()
scrollLeft()

$(window).scrollLeft()
$(window).scrollTop()

盒子模型

内容宽高 : width和height

内容+padding : innerWidth和innerHeight

内容+padding+border :outerWidth和outerHeight

内容+padding+border+margin : outerWidth(true)和outerHeight(true)

设置值:变得永远是content的值

表单操作

$(':submit').click(
    function () {
        return false
    }
)
如果返回false不提交
如果返回true不提交

内容回顾

标签的文本操作

jq对象.text('想添加的内容')
jq对象.html('<a></a>')   # 参数可以是dom对象或者jq对象

标签的操作

父子关系:父节点添加子节点
父节点.append(子节点)
子节点.appendTo(父节点)
父节点.prepend(子节点)
子节点.prependTo(父节点)

兄弟关系:加到之前或者之后
哥哥.after('要添加的弟弟节点') 
$('要添加的弟弟节点').insertAfter(哥哥)
弟弟.before('要添加的哥哥节点')
$('要添加的哥哥节点').insertBefore(弟弟)
remove : 删除所有,返回被删除的标签,标签原本的事件被清除
detach : 删除标签,返回被删除的标签保留事件
empty  : 清空标签的内容\子元素
要被改的.replaceWith(新)
新的.replaceAll(旧的)
克隆
clone()   不拷贝事件
clone(true) 拷贝事件

标签的属性操作

通用属性
attr
    attr('属性名') 获取属性值
    attr('属性名','属性值') 设置一个属性
    attr({'属性名':'属性值'....}) 设置多个属性
removeAttr
    removeAttr('属性名') 删除某个属性
prop
    针对true/false两种值的
    checkbox redio
css
dom.style.color = 'red';
$(obj).css('color','red')
$(obj).css({'color':'red',....})
类操作
addClass('box c1')
removeClass('box')
toggleClass('box')
val
$对象.val()   获取值 针对表单内的元素
val('内容')   设置值 针对表单内非选择框
val([1])     设置值 针对表单内的选择框
盒子样式
width \ height   内容宽高
innerWidth \ innerHeight  内容+padding宽高
outerWidth \ outerHeight  内容+padding+border宽高
outerWidth(true) \ outerHeight(true) 包括margin宽高
滚动条
scrollTop   垂直滚动条距离顶部的距离
scrollLeft  水平滚动条距离左侧的距离
表单
给submit绑定事件
如果对应的函数返回值是false,表单就不提交了

动画

show系列
    show hide toggle
slide滑动系列
   slideUp slideDown slideToggle(时间,回调函数)
fade淡入淡出系列
   fadeOut fadeIn fadeToggle
动画的停止
   stop 永远在动画开始之前,停止动画

事件

事件绑定
// bind 参数都是选传的,接收参数e.data
    $('button').bind('click',{'a':'b'},fn)
    function fn(e) {
        console.log(e.data)
        console.log(e.data.a)
    }

    $('button').bind('click',fn)
    function fn(e) {
        console.log('wahaha')
    }
// 简写的事件名称当做方法名
    $('button').click({'a':'b'},fn)
    function fn(e) {
        console.log(e.data)
        console.log(e.data.a)
    }

    $('button').click(fn)
    function fn(e) {
        console.log('wahaha')
    }
解除绑定
$('button').unbind('click')

各种事件

click(function(){...})   // 单机事件

blur(function(){...})    // 失去焦点
focus(function(){...})   // 获得焦点

change(function(){...})  // input框鼠标离开时内容改变触发

keyup(function(){...})   // 按下的键盘触发事件 27对应的是esc键 获取键盘编号 e.keyCode
mouseover/mouseout       // 如果给父元素绑定了over事件,那么这个父元素如果有子元素,每一次进入子元素也                            触发父元素的over事件
mouseenter/mouseleave = hover(function(){...})  //鼠标的悬浮
事件冒泡
<style>
        .outer{
            width: 300px;
            height: 300px;
            background-color: red;
        }
        .inner{
            width: 100px;
            height: 100px;
            background-color: forestgreen;
        }
    </style>

<body>
    <div class="outer">
        <div class="inner"></div>
    </div>
</body>

<script>
    $('.outer').click(
        function () {
            alert('outer')
        }
    )
    $('.inner').click(
        function (e) {
            alert('inner')
            // e.stopPropagation() //阻止事件冒泡方法1
            return false    //阻止事件冒泡方法2
        }
    )
</script>
事件委托
$('div').on('click','button',{'a':'b'},function (event) {
        console.log(event.data)
        alert('不许点')
    })
相当于把button元素的点击事件委托给了父元素div
后添加进来的button也能拥有click事件

页面的加载

document.onload = function(){
   //js 代码 
}
window.onload = function () {
            $('button').click(function () {
            alert('不许点')
            })
}
onload要等到所有的文档 音视频都加在完毕才触发
onload只能绑定一次

//jquery的方式,只等待文档加载完毕之后就可以执行,在同一个html页面上可以多次使用
$(document).ready(
     function () {
       //文档加在完毕之后能做的事情 
})

//jquery的方式(简写)*****
$(function () {
    //文档加在完毕之后能做的事情        
  })

//示例
$(function () {
     $('button').click(function () {
          alert('不许点')
     })
})

//jquery中等待所有的资源包括视频 音频都加载完才执行function中的代码,可以使用多次
$(window).ready(
      function () {
           alert('123')
})

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!