javascript - $('#id div')==$('#id').find('div')为什么返回false

查看:150
本文介绍了javascript - $('#id div')==$('#id').find('div')为什么返回false的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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


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


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

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

我已经懵了,谁可以来解释下这两个的值为什么不同吗.英文不好,官方API看不懂?
我上网找到的资料都没有说明为什么不同,只是说两者执行的过程不同,但是效果相同,
都是返回一个jquery对象,却没有说明$('#id div') == $('#id').find('div')返回false的原因
有个百度知道的回答说两者详细的区别跟CSS样式的区别一样,因为jquery的选择器就是根据CSS样式规则来使用的.但是没有说明css的样式区别
http://zhidao.baidu.com/link?url=wXwLei9sSa5N-60RjO2hs3rL0V_wBBxfhLHsrRJJ-Fza526anJ1Im_UXyQOc2Sq6s6Gv135lSMOWF5FQKGGjA_

解决方案

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

> 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对象,然后多次使用。
希望对你能有帮助!

这篇关于javascript - $('#id div')==$('#id').find('div')为什么返回false的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆