JQuery随笔(3) DOM操作和动画效果

JQuery的DOM操作和动画效果

相比的原生的js的繁杂的DOM操作,JQuery的DOM操作更加简便,代码也更加简洁。JQuery本身就是对原生JS的封装,封装的目的往往就是让代码更加简洁,更加易懂。

JQuery里面有封装了一些对于元素淡入淡出的操作,可以从一定程度上丰富我们的网页~

DOM操作

JQuery的DOM操作常用的主要用来给某个元素添加子节点或者删除子节点,可以用在JS中获取后端传递的数据,动态的生成界面,很方便。常用的文档(document)操作如下:

  1. 在一个节点内部插入子节点:

    语法说明
    $(selector).append(node)将节点node追加加到selector的最后一个子节点
    $(selector).appendTo(node)将selector元素追加加到node的最后一个子节点中,与append操作对象相反
    $(selector).prepend(node)将节点node追加加到selector的第一个子节点
    $(selector).prependTo(node)将selector元素追加加到node的第一个子节点中,与prepend操作对象相反

    说明:selector值的是JQuery的选择器(),node指的是节点元素,其实$(selecotr)和node在某种意义上是相同的,可以说都是指HTML标签对象。

    新添加的node的常用形式:

    • 直接使用HTML标签字符串

      <body>
          <div>
              <!-- 这里会被添加一个h1标签-->
          </div>
      </body>
      
      <script>
      	$(function() {
              var node = "<h1>这是HTML标签字符串</h1>";
              $("div").append(node);	//这样即可在下面的div中添加 <h1>这是HTML标签字符串</h1> 这个标签
          })
      </script>
      
      
    • 使用选择器获取页面中已有的标签进行添加操作

      <body>
          <div id="div1">
              <!-- 这里会被添加一个h1标签-->
          </div>
          <div id="div2">
              <h1> 这是div2中的h1标签 </h1>
          </div>
      </body>
      
      <script>
      	$(function() {
              var node = $("#div2 > h1");	//获取div2下的h1标签
              $("div").append(node);	//这样即可在下面的div1中添加 <h1> 这是div2中的h1标签 </h1>
          })
      </script>
      

      值得注意的是:使用这种方式的添加相当于进行元素的移动,会将div2中的h1标签移动div1中,而div2中的h1标签就不见了,如果要实现复制的方式的话,上面的添加可用.clone()克隆的方式实现:

      <script>
      	$(function() {
              var node = $("#div2 > h1");	//获取div2下的h1标签
              $("div").append(node.clone());	//这样即可在下面的div1中添加 <h1> 这是div2中的h1标签 </h1>
          })
      </script>
      
  2. 在节点外部插入节点:即给节点添加兄弟节点

    语法说明
    $(selector).after(node)在选择器选中的所有元素后面插入节点node
    $(selector).insertAfter(node)将选择器选中的所有元素都插入到节点node后面
    $(selector).before(node)在选择器选中的所有元素前面插入节点node
    $(selector).insertBefore(node)将选择器选中的所有都插入到节点node前面

    说明:

    由于JQuery选择器选中的匹配节点放在一个数组里面(可以看成JQuery匹配的对象返回一个数据对象),所有上述的操作对于被选择器选中的元素都会生效,例如$(selector).after(node), 如果有多个元素被selector选中了,那么这些元素都会被添加到node节点后面,并且是以移动的方式添加到节点后面的。

  3. 删除节点:

    语法说明
    $(selector).remove()将selector选中元素删除,与该对象相关的事件绑定,相关数据等都会消失
    $(selector).empty()将selector选中的元素的子节点清空
    $(selector).detach([selector])将选中的元素从DOM中删除

    说明:.detach(),与.remove() 不同的一点是.detach()只是将元素从DOM中移除,但是在jquery对象中任然会保留下来,也就说与该对象绑定的事件,相关数据都会保留下来。

    这是为什么呢?在.detach()源码中可以看到

{
detach: function( selector ) {
    	//跑去调用remove方法
		return remove( this, selector, true );	//注意第三个参数传递的值为true
	}
}
function remove(elem, selector, keepData) {
    //由于第三个参数中传递了true,所以并不执行以下代码,即cleanData()不执行,所以数据没被清楚掉
    if ( !keepData && node.nodeType === 1 ) {
			jQuery.cleanData( getAll( node ) );
		}
}

PS:上述源码并不是全部,在IDEA中可以对着方法名按住Ctrl+鼠标单击进入源码查看。

动画效果

  • 常用的展示和隐藏
方法名说明
$(selector).show([speed], [easing],[fn])以动画的方式显示元素对象
$(selector).hide([speed], [easing],[fn])以动画的方式将元素隐藏
$(selector).toggle([speed], [easing],[fn])以动画的方式:元素显示则隐藏,元素隐藏则显示(翻转)

参数说明:[] 的意思是可选的意思,即可以不用传递参数也行

​ speed: 动画展示的速度,可选则为slow,normal,fast,和传递毫秒值

​ easing:动画展示的方式,可选为swing(即开始和结束慢慢展示,中间快速展示),lineing(即匀速展示)

​ fn:动画展示完成的回调函数

  • 滑块的动画

    方法名方法名
    $(selector).slideDown([speed], [easing],[fn])向下滑动展示选中对象
    $(selector).slideUp([speed], [easing],[fn])向上滑动收起选中对象
    $(selector).slideToggle([speed], [easing],[fn])翻转滑动行为,展示或收起

    参数与上面一致

  • 淡入和淡出

    方法名方法名
    $(selector).fadeIn([speed], [easing],[fn])元素淡入
    $(selector).fadeOut([speed], [easing],[fn])元素淡出
    $(selector).fadeToggle([speed], [easing],[fn])淡入和淡出转化
    $(selector).fadeTo(speed, opacity, easing, fn)逐渐显示到指定的透明度,opacity为指定的透明度

    其他参数与上面一致

更多内容可以查看:属性操作官方文档
JQuery本地文档下载:CSDN下载
JQuery各个版本下载:CSDN下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值