jQuery02


小概

本章学习jQuery的三个部分:类操作,动画,节点操作。原理也是使用原生JS中的方法封装实现的,只不过使用起来更简洁方便。关键词:类操作 addClass(),removeClass(),hasClass(),toggleClass();动画 show(),hide(),slideDown(),slideUp(),fadeIn(),fadeOut(),animate(),stop();节点操作 html(),$(),append(),prepend(),appendTo(),prependTo(),before(),after(),empty(),remove(),clone()。


提示:以下是本篇文章正文内容,下面案例可供参考

1. 类操作

无非就老生常谈:增删改查

1.1 添加类名

语法:元素.addClass(‘类名’)

      $('#addClass').click(function () {
        //1.1 给id为div1的元素添加类. 
        $('#div1').addClass('fontSize30');
        //$('#div1').addClass('fontSize30 width200');

        //1.2 给div们添加类. 
        //$('div').addClass('width200'); //有隐式迭代.
      });

1.2 删除类

语法:元素.removeClass(‘类名’)

     $('#removeClass').click(function () {
        //2.1 给id为div1的元素移除类. 
        //$('#div1').removeClass('fontSize30');
        //$('#div1').removeClass('fontSize30 width200');

        //2.2 给div们移除类
        $('div').removeClass('width200'); //有隐式迭代.
      });

1.3 判断类

(查看是否存在这个类名)语法:元素.hasClass(‘类名’)
返回值是boolear类型

      //用来判断一个元素是否拥有某个类,如果拥有就返回true,否则返回false. 
      $('#hasClass').click(function () {
        console.log($('#div1').hasClass('fontSize30'));
      });

1.4 切换类

元素有这个类就移除这个类,没有这个类就添加这个类.
语法:元素.toggleClass(‘类名’)

      $('#toggleClass').click(function () {
        $('#div1').toggleClass('fontSize30');
      });

1.5 修改类

可以使用attr()修改,原生js中的attribute属性吗?自定义属性(setattributes,getattribute,removeattribute)
元素.attr(‘属性名’,‘属性值’)

       //克隆
        let $cloneDiv = $('#div1').clone();
        //修改一下克隆节点的id 
        $cloneDiv.attr('id','div2');  //把id='div1'改成div2
        console.log($cloneDiv);

2. 动画

2.1 三组基本动画

  • 显示show() / 隐藏hide()
    $(function () {
      //1.显示动画 show(参数1,参数2)
      //参数1: 动画执行的时长,毫秒数,给代表动画时长的单词('slow' 'normal' 'fast')
      //参数2: 动画执行完毕后的回调函数.
      $('#show').click(function () {
        //1.1 show()不给参数就是直接显示没有动画效果. 
        $('#div1').show();
        //1.2 
        $('#div1').show(1000);
        $('#div1').show('normal');
        //1.3 
         $('#div1').show(1000,function(){
           console.log('动画做完了');
         });
      });
  • 滑入slideDown() / 划出slideUp()
    $(function () {
      //1.滑入 slideDown(参数1,参数2)
      //参数1: 动画执行的时长
      //参数2: 动画执行完毕后的回调函数
      $('#slideDown').click(function () {
        //1.1 不给参数也有滑入的效果,时长是默认的normal(400ms)
        //$('#div1').slideDown();

        //1.2 
        $('#div1').slideDown(1000);

        //1.3 
        // $('#div1').slideDown(1000,function(){
        //   console.log('滑入了');
        // });
      });

      //2.滑出 slideUp(参数1,参数2);
      $('#slideUp').click(function () {
        $('#div1').slideUp(1000);
      });

      //3.切换 slideToggle(参数1,参数2)
      $('#slideToggle').click(function () {
        $('#div1').slideToggle(1000);
      });

    });
  • 淡入fadeIn() / 淡出fadeOut()
    $(function () {
      //1.淡入 fadeIn(参数1,参数2)
      //参数1: 动画执行的时长
      //参数2: 动画执行完毕后的回调函数
      $('#fadeIn').click(function () {
        //1.1 不给参数有默认的400ms的动画时长. 
        //$('#div1').fadeIn();

        //1.2 
        $('#div1').fadeIn(1000);

        //1.3 
        // $('#div1').fadeIn(1000,function(){
        //   console.log('淡入了...');
        // });
      });

      //2.淡出 fadeOut()
      $('#fadeOut').click(function () {
        $('#div1').fadeOut(1000);
      });

      //3.切换 fadeToggle()
      $('#fadeToggle').click(function () {
        $('#div1').fadeToggle(1000);
      });

      //4.淡入到哪里 fadeTo()
      $('#fadeTo').click(function () {
        $('#div1').fadeTo(1000,0.5,function(){
          console.log('到了');
        })
      })
    });

fadeIn(500):(color)由浅到深慢慢出现,这个过程是500毫秒
fadeOut(500):由深到浅慢慢消失,这个过程500毫秒。

2.2 自定义动画

自定义动画: animate(参数1,参数2,参数3,参数4);
参数1: 必填项,是一个对象,做动画的属性们
参数2: 可填项,动画时长
参数3: 可填项,匀速还是缓动,取值是’swing’或者’linear’, 如果不写默认是swing
参数4: 可填项,动画执行完毕后的回调函数

        $('#div1').animate({
          left: 800,
          width: 300,
          height: 300,
          opacity: 0.5
        }, 3000, 'swing', function () {
          //继续让div1做动画. 
          $('#div1').animate({
            left: 400,
            width: 100,
            height: 100,
            opacity: 1
          },3000,'linear');
        });

自定义动画animate(),记住括号里面的4个参数,这个方法就掌握了一半了。

2.3 停止动画

stop方法:停止动画效果
stop(clearQueue, jumpToEnd);
第一个参数:是否清除队列
第二个参数:是否跳转到当前动画的最终效果

      $('#box li').mouseenter(function(){
        $(this).stop(true,false).animate({width:800},500).siblings('li').stop(true,false).animate({width:100},500)
      });

这个方法一般用于在执行动画之前清除以前的动画队列.stop(ture,false)
假如你给一个元素加了移入事件触发动画,然后你一直触发这个事件就会增加动画队列,结果就是,你停止移入了,动画还一直在执行(因为你之前触发了很多次,他们在排队执行),所以你需要在事件触发的时候,先清除之前的动画队列再执行动画。

3. 节点操作

节点操作其实和之前原生JS的操作差不多,增 删 克隆 清空 追加

3.1 创建节点

1.html()
本质用来获取 / 设置元素内容的;.html() 括号中不给参数就是获取,html(内容) 给参数就是设置。因为可以吧内容中的标签解析出来,所以可以用来做创建节点.特点:会覆盖原来内容。
原理就是原生中的innerHTML()

     $('#btnHtml1').click(function () {
        //1.1 获取内容 html();
        //console.log($('#div1').html());

        //1.2 设置 html(内容);
        //会覆盖原来的内容. 
        //如果设置的内容中有标签,那会把标签解析出来. 
        $('#div1').html('我是设置的<b>内容</b>');
      });

2.$( )
他创建的元素只存在于内存中.
如果想要在页面上显示就要追加. append()
像不像原生中的createElement()

      $('#btn1').click(function () {
        let $link = $('<a href="https://www.baidu.com">百度一下,你就知道</a>');
        console.log($link);

        //把新创建出来的a标签追加到div1中去. 
        $('#div1').append($link);
      });

3.2 追加节点

1. 子元素追加到父元素

append()
语法: 元素A.append(元素B); 把元素B作为元素A的最后一个子元素添加.
就是父亲元素.append(需要加到最后面的儿子元素)

        let $li32 = $('#li32');
        $('#ul1').append($li32);

appendTo()
语法: 元素B.appendTo(元素A); 把元素B作为元素A的最后一个子元素添加.
To 就是儿子元素放到父亲里面的最后面

    let $li32 = $('#li32');
   	$li32.appendTo($('#ul1'));

prepend()
语法: 元素A.prepend(元素B); 把元素B作为元素A的第一个子元素添加.
prependTo();
语法: 元素B.prependTo(元素A); 把元素B作为元素A的第一个子元素添加.

        let $li32 = $('#li32');
        $('#ul1').prepend($li32);

        let $liNew = $('<li>我是新建的li</li>');
        $liNew.prependTo($('#ul1'));

和append/appendTo用法基本一致,只不过append是加到最后面,prepend是加到最前面

2. 兄弟元素追加

before()
语法: 元素A.before(元素B); 把元素B插到元素A的前面.

let $div = $('<div>我是新创建的div</div>');
        $('#ul1').before($div);

after()
语法: 元素A.after(元素B); 把元素B插入到元素A的后面

        let $div = $('<div>我是新创建的div</div>');
        $('#ul1').after($div);

js原生中只有insertBefore(),jQuery用insertbefore写了个after,真不戳。

3. 清空节点

empty() 清空节点(节点还在,里面的东西没了)
remove() 删除节点(节点没了)

    $(function () {
      //给按钮设置一个点击事件
      $('#btn').click(function () {
        //1.清空节点
        //$('#ul1').html(""); //不推荐.容易造成内存泄漏
        //$('#ul1').empty(); //推荐

        //2.删除节点. 
        $('#li3').remove(); //'自杀'
      });

      //总结
      //清空节点 empty();
      //删除节点 remove();
      

    });

4. 克隆节点

clone()

      //jQuery中克隆节点用 clone()
      //克隆的节点只存在于内存中,如果要在页面上显示就要追加. 
      //不管参数是true还是false,都会克隆后代元素. 
      //如果参数是true,会克隆事件. 
      //如果参数是false,不会克隆事件,默认参数也是false. 
      $('#clone').click(function(){
        //克隆
        let $cloneDiv = $('#div1').clone();
        //修改一下克隆节点的id 
        $cloneDiv.attr('id','div2');
        console.log($cloneDiv);
        //追加. 
        $('body').append($cloneDiv);
        
      });

总结

太多细节了,真的需要好好去整理。溜了溜了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值