zoukankan      html  css  js  c++  java
  • jquery介绍

    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{
                 300px;
                height: 300px;
                background-color: red;
            }
            .inner{
                 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')
    })
    

  • 相关阅读:
    Asp.Net Web API 2第一课——入门
    Servlet之ServletContext获取web上下文路径、全局参数、和Attribute(域)
    jsp 获取服务器ip 以及端口号
    对String值不可变的理解以及String类型的引用传递问题
    关于 SAXParseException Content is not allowed in Prolog (前言中不允许有内容)
    用tomcat插件 在Eclipse 中配置Tomcat项目
    docker保存日志文件到本地
    java split函数结尾空字符串被丢弃的问题
    byte类型的127+1=-128?
    java 中 Integer 传参方式的问题
  • 原文地址:https://www.cnblogs.com/SkyRabbit/p/11573887.html
Copyright © 2011-2022 走看看