jquery--前端方法库

72 阅读8分钟

jquery前端方法库

封装各种dom操作 引入jq.js会暴露俩变量名$ jquery

    1.jq选择器 
      1-1选择器 ,对元素的获取  语法: $(选择器)
         1.:first
         2.:last
         3.:eq(索引) 按索引排列的第几个
         4.:odd 按**索引**排列的奇数个
         5:.even 按**索引**排列的偶数个
        (注意::odd 索引值是奇数,即 2,4,6
         :even 索引值是偶数 从0开始,即1,3,5
         从界面上来看 odd恰好是偶数行,even是奇数行。正好相反)
      !1-2筛选器,对已经获取到的元素进行二次筛选
       2筛选器:对jq的元素集合进行二次筛选,只有jq元素才可以使用
           1.:first
           2.:last
           3.:eq(索引) 按索引排列的第几个
           
           4.next() 当前元素的下一个元素
           5.nextAll()
             1.语法:元素集合.nextAll() 获取到当前元素后面的所有兄弟元素
             2.语法:元素集合.nextAll(选择器) 获取到当前元素后面所有元素中指定选择器的那一个
            6.nextUntil()
             1.语法:元素集合.nextUntil() 获取到当前元素后面所有的兄弟元素
             2.语法:元素集合.nextUntil(选择器) 获取到当前元素后面所有的兄弟元素,直到选择器元素为止(不包含选择器元素)
            
            7.prev() 当前元素的上一个元素
            8.prevAll()
             1.语法:元素集合.prevAll() 获取到当前元素前面的所有兄弟元素
             2.语法:元素集合.prevAll(选择器) 获取到当前元素前面所有元素中指定选择器的那一个
            9.prevUntil()
             1.语法:元素集合.prevUntil() 获取到当前元素前面所有的兄弟元素
             2.语法:元素集合.prevUntil(选择器) 获取到当前元素前面所有的兄弟元素,直到选择器元素为止(不包含选择器元素)
             
             10.parent()获取到当前元素的父元素
             11.parents() 所有的祖先元素
             1.语法:元素集合.parents() 获取结构父级的所有父元素
             2.语法:元素集合.parents(选择器) 获取结构父级的所有父元素中符合选择器的那一个元素

             12.children()获取到当前元素的子元素
             1.语法:元素集合.children() 获取结构父级的所有子元素
             2.语法:元素集合.children(选择器) 获取结构父级的所有子元素中符合选择器的那一个元素

             13.siblings()拿到该元素的所有兄弟元素,自己除外

             14.find()找到该元素所有后代元素里面符合选择器条件的元素

             15.index() 获取该元素在其父元素里面的索引位置
             

jQuery操作文本内容

     操作元素内文本和超文本
     注意:属于jQuery 的方法,只能jQuery调用

     1.html()
      语法: 1.元素集合.html() 获取该元素的超文本内容,以字符串的形式返回
            2.元素集合.html('内容') 设置元素集合内元素的超文本内容
             完全覆盖式写入
             隐式迭代 :元素集合内有多少元素,就写入多少元素
   
     2. text()
       语法:1.元素集合.text() 获取该元素的文本内容,以字符串的形式返回
       (文本内容不涉及html结构,拿到的是所有元素的文本内容,以一个字符串形式返回)
             2.元素集合.text('内容') 

     3.val()
       语法:1.元素集合.val()获取元素集合内元素的value值
             2.元素集合.val('内容')设置元素的value值
             完全覆盖式写入
             隐式迭代 : 元素集合内有多少元素,就写入多少元素
             
 <div>超文本内容</div>
 <div>超文本内容</div>
 <div>超文本内容</div>

 <input type="text" value="你好星期二">
 <input type="text" value="你好星期三">

 <script src="../js/jquery-1.8.3.min.js"></script>
 <script>
  
    //html()
     console.log($("div").html());
     $("div").html('<span>2022年8月2日 星期二</span>')

    //text()
    $("div").text('<span>2022年8月2日 星期二</span>')

    //val() 只能拿到第一个值
     console.log($('input').val());
     $("input").val('hello world');
 </script>
             

jq操作元素类名

1.addClass() 添加元素类名
2.removeClass() 删除元素类名
3.hasClass() 判断元素有没有类名
4.toggleClass() 切换类名 有就删除无就添加

<div>你好星期二</div>
<script src="../js/jquery-1.8.3.min.js"></script>
<script>
    // 1.addClass()
    console.log($('div').addClass('box')); 
    //3.hasClass
    console.log($('div').hasClass('box')); 
    // 2.removeClass() 
    console.log($('div').removeClass('box')); 
    // 4.toggleClass()
    console.log($('div').toggleClass('box')); 
</script>

jq操作元素样式

    1.css()
     1-1 语法:元素集合.css('属性')
      获取元素的某一个样式的值,不管是行内还是非行内(外联和内嵌)都能获取到
     1-2 语法:元素集合.css('样式名','样式值') 设置元素行内样式
      隐式迭代 : 元素集合内有多少元素,就写入多少元素 
      单位 px 可以省略
      

jq事件绑定

事件委托也叫事件代理,“事件代理”即是把原本需要绑定在子元素的响应事件(click、keydown…)委托给父元素,
	让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡.
  1.on() :事件绑定,根据不同的参数做不同的事情
    1-1语法:元素集合.on(事件类型,事件处理函数) 直接绑定事件,有隐式迭代
           $("ul>li").on("click", function () {
				console.log("nh");
			});

    1-2 on(事件类型,选择器,事件处理函数) 事件委托的绑定,把选择器元素委托给元素集合里面的元素
    (注意:选择器元素要是元素集合内元素的后代元素)
           $("ul").on("click", "li", function () {
				console.log("xq");
			});

    1-3 on(事件类型,复杂数据类型,事件处理函数)给集合内所有元素绑定事件
       这个复杂数据类型是事件触发传递给事件的*参数* data

    1-4 on(事件类型,选择器,数据,事件处理函数) 事件委托形式,带上传递参数
     把选择器所属的事件,委托给元素集合内的事件
     数据位置,就是在事件触发的时候传递给事件处理函数的参数

     1-5 on({事件类型1:事件处理函数,事件类型2,事件处理函数2,...})
     一次性绑定多个事件,无法传参

  2.one() :事件绑定的方法,和on()方法参数使用形式一样,只能执行一次
  ?3.off() :解除事件绑定
     3-1语法:元素集合.off(事件类型)   解除元素身上该事件类型的所有事件处理函数
     3-2语法:元素集合.off(事件类型,事件处理函数)  解除元素身上该事件类型的某一个事件处理函数

  
  4.trigger() 用js代码方式触发事件  
  语法:元素集合.trigger(事件类型)
  

jQuery 的事件函数

    click() mouseover()...自带隐式迭代

    唯一特殊事件 hover() 
    语法:元素集合.hover(移入的事件处理函数,移出的事件处理函数)
    只传一个参数,移入移出都触发    
    
 <div style="width: 200px;height: 300px;background: rgb(98, 255, 98);"></div>
 <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
 <script>  
    function A() {console.log('移入A')}
    function B() {console.log('移出B')}
     $('div').hover(
         A,B
        //  function() {console.log('移入')},
        //  function() {console.log('移出')}
     )
 </script>
 

jQuery节点操作

     1.创建节点 
       语法: $(html结构字符串)
        1-1.$()里面传递一个选择器==获取节点
        1-2.$()里面传递一个html结构字符串==创建节点
        1-3.$()里面传递一个DOM元素节点==转换成jQuery元素 

      ?2.插入节点
        2-1 append() 语法:父元素.append(子元素)  --放在父元素末尾
        2-1 append() 语法:子元素.appendTo(父元素)  --放在父元素末尾
        -----------
        2-3 prepend()语法:父元素.prepend(子元素)  --放在父元素前面
        2-4 prependTo()语法:子元素.prependTo(父元素)  --放在父元素前面
        
      3.外部插入(兄弟关系的插入)
        3-1 after() 语法:存在元素.after(插入元素)  --把插入元素放在存在元素后面,以兄弟关系出现
        3-2 insertAfter() 插入元素.insertAfter(存在元素)  --把插入元素放在存在元素后面,以兄弟关系出现

      4.删除节点 remove()
        4-1 语法:元素集合.remove() 同归于尽,把自己从自己的父节点里移除
        4-2 语法:元素集合.empty() 清理门户,把所有后代节点移除,保留自己

      5.替换节点
       4-1 replaceWith()语法:被替换的节点.replaceWith(换上节点) √
       4-1 replaceAll()语法:换上节点.replaceAll(被替换的节点)

      6.克隆节点 clone()
        6-1 语法:元素集合.clone() 必然携带所有节点过来
          第一个参数默认是FALSE,表示不克隆元素本身的事件

jQuery 操作元素属性

 三种属性操作
    1.attr() 和 removeAttr()
     获取语法:元素集合.attr(属性名) 获取标签属性,包括一些自定义属性
     设置语法:元素集合.attr(属性名,属性值) 设置元素标签属性
              把属性设在标签上,当做一个自定义属性使用
              设置的都会变成字符串类型,对原生属性有些有用,有些没用
    删除语法:元素集合.removeAttr(属性名) 删除元素自定义属性 
             多用于删除attr设置的属性,ID class也可以删除
    1.prop() 和 removeProp()
      获取语法:元素集合.prop(属性名) 获取元素的原生属性,也可以获取元素自定义属性
              但是arrt设置的自定义属性他获取不到
      设置语法:元素集合.prop(属性名,属性值) 设置元素原生属性,也可以设置元素自定义属性
               设置的自定义属性不会显示在标签上,而是存储在元素身上
               设置的是什么类型,获取到的还是什么类型
       删除语法:元素集合.removeProp(属性名) 删除元素原生属性
                只能删除prop设置的属性,ID class不可以删除
    1.data() 和 removeData()
       获取语法:元素集合.data(属性名) 获取使用 data()方法存储的数据,获取元素身上data-xxx属性
       设置语法:元素集合.data(属性名,属性值) 只是吧数据存储在元素身上的某一空间内,不会出现在标签上
              把属性设在标签上,当做一个自定义属性使用
              设置的都会变成字符串类型,对原生属性有些有用,有些没用
        删除语法:元素集合.removeData(属性名) 删除元素自定义属性 
              只能删除data设置的属性,不可以删除元素身上 data-xxx的属性
              
<div class="abc"  data-index="hello">星期三</div>
<p data-index="hello world">你好</p>
<u >hello</u>
<input type="checkbox">
<input type="button" value="按钮">
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>

<script>
    //attr() 和 removeAttr()
    //获取标签属性
    console.log($('div').attr('class'));
    // 设置
    $('div').attr('id', 'xiaoqiao')
    console.log(typeof $('div').attr('class'));//string 

    $('input[type=button]').click(() => {
        console.log('1');
        $('input').attr('checked', true)//当做一个自定义属性,没有映射到dom元素
    })
    // 删除
    $('div').removeAttr('id', 'xiaoqiao')

    //prop() 和 removeProp()
    $('p').prop('a', 'xiaoqiao')
    $('p').prop('ab', 20)
    console.log(typeof $('p').prop('ab'));//number
    //删除
    $('p').removeProp('ab')
    console.dir($("p"));

    //data() 和 removeData()
    console.log($('div').data('index'));//获取 hello
    $('p').data('abc',200);//设置
    $('p').data('abcd',200);//设置

    $('p').removeData('abcd');//删除
     console.log($('p'))
</script>

jq获取元素尺寸

     1.width() 和 height()  获取元素内容位置的尺寸
      语法:元素集合.width() 元素集合.height()
     2.innerWidth() 和 innerHeight() 
      获取元素 内容 + padding 的尺寸
      语法:元素集合.innerWidth() 元素集合.innerHeight()
     3.outerWidth() 和 outerWidth()  
     获取元素 内容 + padding + border 的尺寸
      语法:元素集合.outerWidth() 元素集合.outerWidth()
     3-2.outerWidth(true) 和 outerWidth(true)  
     获取元素 内容 + padding + border +margin的尺寸
      语法:元素集合.outerWidth(true) 元素集合.outerWidth(true)

jq操作元素位置

   1. offset() 是一个读写方法  获取
      读写语法:元素集合.offset()
      返回值:一个对象,里面包含一个x信息一个y信息
      相对谁:相对页面左上角的绝对坐标
       读取出来的是一个对象,offset()后不能继续链式编程
    1-2.设置
      语法:元素集合.offset({top:x,left:x})
           设置的是相对页面左上角的绝对位置
    2.position() 是一个读写方法
       读写语法:元素集合.position()
       返回值:一个对象,里面包含一个x信息一个y信息
       就是元素的定位关系
       如果定位的是rightbottom 会自动计算成lefttop
       

jq动画

1.show() 显示
2.hide() 隐藏
3.toggle() 切换

4.slideDown() 下拉显示
5.slideUp() 上拉隐藏
6.slideToggle() 切换显示隐藏

实际操作 display: none;和 display:block;
语法:方法名(运动时间,运动曲线,回调函数)
运动时间:多长时间结束
运动曲线:什么方式运动
回调函数:运动结束后触发

jq渐隐渐显动画

    1.fadeIn() 淡入--显示  opacity 0~ 1
    2.fadeOut() 淡出--隐藏 opacity 1~ 0
    3.fadeToggle() 切换
    语法:方法名(运动时间,运动曲线,回调函数)
    4.fadeTo()运动到指定透明度
    语法:fadeTo(时间,指定透明度,运动曲线,回调函数) 

jq综合动画 --点击方块变圆

    1.animate()
     语法:animate({属性},时间,运动曲线,回调函数)
     注意:颜色属性不能运动 
         css3的2D和3D 动画效果运动不了
<button>点击</button>
 <div></div>
 <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
$('button').click(()=> {
    $('div').animate({
       width:400,
       height:400,
       borderRadius: '50%',
     //   backgroundColor:'red'//注意:颜色属性不能运动 xxx
   },1000,'linear',()=>{console.log('运动结束');})
})

jq停止动画

1.stop()
 语法:元素集合.stop() 立刻停止动画
 运动到什么位置就停止在什么位置

 2.finish()
  语法:元素集合.finish() 立刻结束动画