【问题标题】: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)(除非你打算克隆它)
  • es 回复您已删除的问题:截图不错。这是用于创建您正在查看的对象的构造函数的名称。顾名思义,您正在查看缩小代码的结果,但如果您在 Chrome 控制台中执行此操作,您可以看到相同的格式:function e() { } new e; 您将在输出中看到e { }。 (顺便说一句,在对该问题的评论中,您似乎认为我对这个问题投了反对票。我没有。通常情况下,评论的人不是这个人投反对票。)
  • @T.J.Crowder 确实是缩小版,我在“开发工具”的“源”中使用“美化”。非常感谢,真的很有帮助。

标签: javascript jquery jquery-selectors


【解决方案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

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

    【讨论】:

      猜你喜欢
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多