DOM对象与jquery对象的相互转换

遇到一个很神奇的事情:

<!--html-->
  <div id="content">
    <a onclick="closeIt(this)" id="close" href="#">点我</a>
  </div>
  <!--javascript-->
  <script type="text/javascript" src="jquery-3.3.1.min.js"></script>
  <script>
    function closeIt(a){
      console.log($(a));
      console.log($(a).parents()[0])
    }
  </script>

输出
image.png

那么问题来了 : $(a)明明是一个jquery对象,怎么就经过了一系列的jquery方法后变成了普通的DOM对象了呢?

1. 首先来看看DOM对象和Jquery对象有什么区别 , 同样是上面的HTML
<script>
    function closeIt(a){
      console.log($(a));
      console.log(a);
      console.log(document.getElementById('close'));
    }
  </script>

输出:
image.png

总结一下,JQ对象的格式为

w.fn.init [a#close]

  • 0: a#close
  • length: 1
  • _proto_: Object(0)
DOM对象的格式为

点我

2.JQ对象与DOM对象之间怎么相互转换呢?
  • JQ对象转换成DOM对象
    (1)[index]
    (2)get(index)
    能有人会觉得奇怪,怎么是用下标呢,因为 jquery对象就是一个数组对象呀。
  • DOM对象转换为JQ对象
    (1)$(DOM对象)
var close=document.getElementById('close');
console.log($(close))    //输出JQ对象
3.揭晓谜底啦!!!

$(a)明明是一个jquery对象,怎么就经过了一系列的jquery方法后变成了普通的DOM对象了呢:
当然是因为 ’ [0] ’ 把Jq对象转换成了DOM对象呀

4.补充说明

正常情况下,DOM对象直接用JQ对象的方法会报错
例如:$(a).parents()[0].remove()
那为什么有时候又正常呢?
可能是系统发烧了,哈哈 , 还是按照转换成JQ对象后再它的方法把 , 不然就算现在没错 , 迟早都是要错的!!!
附代码

var parentDiv=$(a).parents()[0];
$(parentDiv).remove();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值