$(var)和var有什么区别?

时间:2019-05-03 10:04:21

标签: javascript jquery jquery-selectors

据我了解,您可以将DOM元素用作jQuery选择器,例如$(document)
那么为什么jQuery attr()函数在这两种情况下都起作用?

let v = $("#nodeID");
//First case
$(v).attr("href","www1"); //works
//Second case
v.attr("href","www2"); //also works

有什么区别?

2 个答案:

答案 0 :(得分:2)

当您将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>

答案 1 :(得分:1)

您可以将多种值传递给jQuery函数。在这种情况下,您将传递a jQuery selection,文档中对此内容进行了说明:

  

选择
  类型:jQuery
  现有的要克隆的jQuery对象。

因此,您正在克隆var

在这种情况下,这完全没有意义。 (如果您要更改值,但需要保留原始值以在其他地方使用,则可能会很有用。)