javascript - 请教一下,为什么使用不同的原生JS方式获取元素,最终得到的是同一个元素节点?
PHP中文网
PHP中文网 2017-04-10 17:56:11
[JavaScript讨论组]

请教一下:
1.为什么使用不同的原生JS方式获取同1个元素最终得到的是同一个元素对象?

2.使用不同的jQuery方式获取同1个元素,得到确不是同一个对象?
(这个问题我的理解是:因为jQuery会首先取得元素,然后构造成1个jQ对象,等于一个新对象。所以同一个元素,用jQ得到的元素对象,都不是来自一个对象)

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<style>
*{margin: 0; padding: 0;}
p{width: 100px; height: 100px; 
    border:1px solid orange;
}
</style>
<script src="../jquery.js"></script>
</head>
<body>
    <p id="box"></p>
<script>
window.onload=function(){ 
    // js 通过不同的方法来取得p
    var oBox1=document.getElementById('box');
    var oBox2=document.body.children[0];
    /*alert(oBox1==oBox2)  true */

    // jq 通过不同的方式来获得p
    var $Box1=$('#box');
    var $Box2=$('p:first');
    /*alert($Box1==$Box2)  false */
};
</script>    
</body>
</html>
PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
高洛峰

原生js是通过遍历DOM节点获取DOM对象的,不同的方法只是遍历的方式不一样,获取的都是同样DOM对象。
jq中通过$('#box');$('p:first');虽然都使用了$()这个方法来获取对象,但因为参数不同,$()方法进行了重载,其内部其实是new了不同的构造函数,构造函数有着不同的方法和属性,其实例$Box1$Box2也就继承了不同的属性和方法。

天蓬老师

js取到的是dom元素,因为是同一个元素,所以相等
jQuery取到的是jQuery对象,两次返回的是两个不同的对象,所以不等

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号