$(var) 和 var 有啥区别?
Posted
技术标签:
【中文标题】$(var) 和 var 有啥区别?【英文标题】:What is the difference between $(var) and var?$(var) 和 var 有什么区别? 【发布时间】:2019-09-21 20:50:25 【问题描述】:据我了解,您可以使用 DOM 元素作为 jQuery 选择器,例如 $(document)
。
那么为什么 jQuery attr()
函数在这两种情况下都有效呢?
let v = $("#nodeID");
//First case
$(v).attr("href","www1"); //works
//Second case
v.attr("href","www2"); //also works
有什么区别?
【问题讨论】:
两者相同,没有区别,被指定为参考。 @MurtazaHussain — 你错了。$(v)
不会创建对 v
的引用(或对与 v
相同的对象已被引用)
v
已经是一个 jquery 对象,所以你不需要再次$(v)
(除非你打算克隆它)
用e
s 回复您已删除的问题:截图不错。这是用于创建您正在查看的对象的构造函数的名称。顾名思义,您正在查看缩小代码的结果,但如果您在 Chrome 控制台中执行此操作,您可以看到相同的格式:function e() new e;
您将在输出中看到e
。 (顺便说一句,在对该问题的评论中,您似乎认为我对这个问题投了反对票。我没有。通常情况下,评论的人不是这个人投反对票。)
@T.J.Crowder 确实是缩小版,我在“开发工具”的“源”中使用“美化”。非常感谢,真的很有帮助。
【参考方案1】:
当您将 jQuery 对象传递给 $
时,它将返回一个 jQuery 对象,其中包含与您传递的原始 jQuery 对象中相同的元素。它们基本相同(尽管对象不是===
)。您可以在$
中任意嵌套jQuery 对象,这不会有什么不同,只是这样做很奇怪。
$($($('div'))).text('foo');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
【讨论】:
【参考方案2】:您可以将许多不同类型的值传递给 jQuery 函数。在这种情况下,您传递的是a jQuery selection,文档中说:
选择 类型:jQuery 要克隆的现有 jQuery 对象。
所以你正在克隆var
。
在这种情况下,这是完全没有意义的。 (如果您要更改值但需要保留原始值以在其他地方使用,这可能很有用)。
【讨论】:
以上是关于$(var) 和 var 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章