javascript - $('#id div')==$('#id').find('div')为什么返回false
阿神
阿神 2017-04-11 11:13:14
[JavaScript讨论组]

jquery中$('#id p')和$('#id').find('p')为什么不相等,能说详细点吗


$('#id p') == $('#id').find('p') //false


$('#id p') === $('#id').find('p') //false

但是$('#id p')的内容和$('#id').find('p')一样的,我认为是类型不同,于是

我已经懵了,谁可以来解释下这两个的值为什么不同吗.英文不好,官方API看不懂

阿神
阿神

闭关修行中......

全部回复(3)
伊谢尔伦

我觉得你提的问题跟下面问题是一样的:

> a={"name":"jim"}
{ name: 'jim' }
> b={"name":"jim"}
{ name: 'jim' }
> a==b
false
> a===b
false

这两个对象看起来是一样的,但是它们并不是同一个对象,因为它们的内存地址是不一样的。
所以即使运行下面的代码:

var elem1 = $("#navList li");
var elem2 = $("#navList li");

这两个对象都是不一样的,这说明创建jQuery对象的时候,并没有使用单例模式,即使相同的选择器,创建的也是不一样的对象,这也是为什么在我们的开发中要尽量先保存创建的jQuery对象,然后多次使用。
希望对你能有帮助!

怪我咯

两个对象的dom是一样的,但是生成的jQuery对象是不一样的

$('p') === $('p') //false

$('p')[0] === $('p')[0]//true

应该比较dom本身不是 jQuery对象

大家讲道理

$('#a .b')返回的是b節點
$('#a').find('.b')返回的是a節點下的b節點

你可以用控制台輸出一下$('#a .b')的prevObject是#a

$('#a').find('.b')的prevObject是html

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

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