js原生dom对象和jQuery对象可以混合使用吗?

简介: 写在前面:本文主要内容包括js原生dom对象和jQuery对象的区别,联系,相互转换,以及踩坑经历。情况是这样的,今天在实现一个js验证码的功能,需要获取input的值,然后我用jQuery的方法获取到了dom节点,然后用原生js获取input的值,结果就出错了,好在后来场外求助启宸欧巴在师兄的帮助下发现问题所在,并成功解决。将今天的踩坑经历,以及网上查阅的资料,集合成一篇文章,分享一波。Dom原生对象和jQuery对象的区别:1.jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类

写在前面:

本文主要内容包括js原生dom对象和jQuery对象的区别,联系,相互转换,以及踩坑经历。情况是这样的,今天在实现一个js验证码的功能,需要获取input的值,然后我用jQuery的方法获取到了dom节点,然后用原生js获取input的值,结果就出错了,好在后来场外求助启宸欧巴在师兄的帮助下发现问题所在,并成功解决。将今天的踩坑经历,以及网上查阅的资料,集合成一篇文章,分享一波。




Dom原生对象和jQuery对象的区别:


1.jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型,两者不等价

注:js原生获取的dom是一个对象,jQuery对象就是一个数组对象,其实就是选择出来元素的数组集合。所以说他们两者是不同的对象类型不等价。

2.jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法. 乱使用会报错。


例如(文章下面有两个踩坑经历。):

  $("#id").html();

  document.getElementById("id").innerHTML;

  意思是指:获取ID为id的元素内的html代码。这两段代码结果相同,但中间的取值过程不同

  即:$("#id").innerHTML、document.getElementById("id").html()之类的写法都是错误的。

注:jQuery是从js衍生出来的,师出同源,但是jQuery是经过一系列操作之后,将其封装成了一个个不同的方法,学习jQuery开始就应当树立正确的观念,分清jQuery对象和DOM对象之间的区别,之后学习 jQuery就会轻松很多的。


js-dom对象和jQuery对象相互转换:


  jQuery对象转成DOM对象---两种转换方式:[index]和.get(index)


  1、jQuery对象是一个数据对象,通过[index]的方法(就是通过下标索引寻找dom,进行操作)

  如:var $v = $("#v") ;    //jQuery对象

  var v = $v[0]; //DOM对象

  alert(v.checked) //检测这个checkbox是否被选中

  2、jQuery本身提供,通过.get(index)方法

  如:var $v = $("#v"); //jQuery对象

  var v = $v.get(0); //DOM对象

  alert(v.checked) //检测这个checkbox是否被选中


  注:其实两者都是同一个道理,即通过索引下标的方式,来寻找dom进行转换。

   DOM对象转成jQuery对象:

  对于DOM对象,只需用$()把DOM对象包装起来,就可得到jQuery对象

  如:var v=document.getElementById("v"); //DOM对象

  var $v=$(v); //jQuery对象


踩坑经历:


今天出错的问题:

出错代码:

var randomCode=$("#js5-authCode").value;//用jq获取dom,用js获取值。
//console的时候,这里会出现undefined。

正确的应该:

var randomCode=$("#js5-authCode").val();//这里的val()是jq的一种方法。


再举个栗子:

$("#id").innerHTML)、document.getElementById("id").html()。

出错点:第一个是用jq获取dom,然后用js操作。第二个是用js获取dom,然后用jq进行操作


总结


框架之类的东西都是封装好了的一个个函数,中间会经历一些操作,中间的取值过程也是不同,所以我们写代码的时候尽量使用同一种方式来写,不能混合使用,大概就是酱样子。



参考资料:

Js - Dom原生对象和jQuery对象的联系、区别、相互转换

DOM对象与jQuery对象的理解与分析


目录
相关文章
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
9月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
292 23
|
JavaScript 前端开发 开发者
深入了解jQuery:轻松实现高效的DOM操作
【10月更文挑战第11天】深入了解jQuery:轻松实现高效的DOM操作
220 0
|
12月前
|
JavaScript 前端开发 测试技术
盘点原生JavaScript中直接触发事件的方式
本文全面探讨了原生JavaScript中触发事件的多种方式,包括`dispatchEvent`、`Event`构造函数、`CustomEvent`构造器、直接调用事件处理器以及过时的`createEvent`和`initEvent`方法。通过技术案例分析,如模拟点击事件、派发自定义数据加载事件和实现提示框系统,帮助开发者掌握这些方法在实际开发中的应用,提升灵活性与兼容性。
470 3
|
JSON 前端开发 JavaScript
JavaScript中对象的数据拷贝
本文介绍了JavaScript中对象数据拷贝的问题及解决方案。作者首先解释了对象赋值时地址共享导致的值同步变化现象,随后提供了五种解决方法:手动复制、`Object.assign`、扩展运算符、`JSON.stringify`与`JSON.parse`组合以及自定义深拷贝函数。每种方法都有其适用场景和局限性,文章最后鼓励读者关注作者以获取更多前端知识分享。
230 1
JavaScript中对象的数据拷贝
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
253 0
|
JavaScript 前端开发 开发者
jQuery文档对象模型DOM的实际应用
jQuery文档对象模型DOM的实际应用
134 0
|
JavaScript 前端开发 API
jQuery对象与DOM对象简介及相互转换
jQuery对象与DOM对象简介及相互转换
233 0