为了账号安全,请及时绑定邮箱和手机立即绑定

querySelector和$()区别

querySelector和$()区别

梵蒂冈之花 2019-03-20 17:09:23
页面有如下元素<div class="list-box">    <div class="buttonrideo">        <input id="aBtn" type="checkbox" class="default-1"/>    </div></div><div class="list-box">    <div class="buttonrideo">        <input id="bBtn" type="checkbox" class="default-1"/>    </div></div>jquery脚本里:var a = document.querySelector("#aBtn");var b = $("#aBtn");a和b有何区别?发现b[0]==a,为何?
查看完整描述

7 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

document.querySelector 是浏览器级别的 API,根据参数选择第一个满足的 DOM 节点。

jquery 脚本里面的 $ 必须在引入了 jquery 之后才能使用,也是 dom 的选择器,选择满足条件的 DOM 节点数组,现在 jquery 貌似结果是原生的 DOM 元素了,所以 $('#aBtn')[0] 就等同于 document.querySelector('#aBtn')


查看完整回答
反对 回复 2019-03-28
?
倚天杖

TA贡献1828条经验 获得超3个赞

  1. a是(调用querySelector)返回的DOM原生element对象

  2. b是(调用jQ的$/jQuery,或者可以叫做jQuery构造器)返回的jQ包装对象,jQ包装对象同时包含有原生DOM对象和一些jQ自己的东西

  3. b[0]==a是因为jQ包装对象在存储时会把原生DOM对象存储在key[0]的位置(这个你console一下就很清楚了)


查看完整回答
反对 回复 2019-03-28
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

a是js对象, b是jquery对象


查看完整回答
反对 回复 2019-03-28
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

首先 $() 函数是JQuery类库里的,querySelector() 是html5里自带的。


$() 的行为是查找所有匹配的元素,并封装成jQuery对象以方便使用。

querySelector() 的行为是查找匹配的第一个元素,返回的值为原生DOM对象。


而对jQuery对象使用方括号操作符会返回原生的DOM对象,所以 b[0] 返回的是匹配该选择器的第一个原生DOM对象,所以会和 querySelector() 返回的值 a 相等。


然后html5里还有一个 querySelectorAll() 方法,该方法返回的值为一个可迭代的 NodeList 对象。这个方法的行为可能和jQuery的 $() 更相似。


let a = document.querySelectorAll('#aBtn');

let b = $('#aBtn');


a[0] === b[0];  //未测试,原则上来说应该是相等的


查看完整回答
反对 回复 2019-03-28
  • 7 回答
  • 0 关注
  • 2605 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号