【问题标题】:Double dollar $$() vs Dollar sign $() in Chrome console behaviorChrome 控制台行为中的双美元 $$() 与美元符号 $()
【发布时间】:2016-06-11 12:12:27
【问题描述】:

在我们的项目中,当一个美元符号在 Chrome 控制台中使用 $() 与两个美元符号 $$() 时,会有不同的功能,除了已知的区别是 $$() 返回一个数组一个 $() 返回第一个元素。

例如,特定元素的选择器,一美元和两美元的查询:

$$(".my-class[my-attribute='trump']") //works

$('.my-class[my-attribute=sanders]') //works

$$('.my-class[my-attribute=trump]') //not work

这种行为的来源和解释是什么?

【问题讨论】:

  • 我不知道你从哪里得到这个。 1和3对我来说是一样的。 i.imgur.com/2YBC2Ad.png(用这个小提琴jsfiddle.net/f9teqyo3
  • @FlorianMargaine 是的,我的也无法重现。我在我们拥有的内部网页上观察到了这个问题。真的不能分享...
  • 那么我想给你一个别人已经给你的链接:) stackoverflow.com/help/mcve
  • 否则我们真的帮不了你。
  • 也就是说,我猜你的页面使用的是prototype.js,它重用了$$变量。

标签: javascript google-chrome google-chrome-devtools


【解决方案1】:

来自Chrome Developer Tools documentation

选择元素

有一些选择元素的快捷方式。与键入标准对应项相比,这些可以为您节省宝贵的时间。

$() 返回匹配指定 CSS 选择器的第一个元素。 它是 document.querySelector() 的快捷方式。

$$() 返回一个数组 匹配指定 CSS 选择器的所有元素。这是一 document.querySelectorAll() 的别名

$x() 返回一个数组 与指定 XPath 匹配的元素。

当您使用querySelector(或$)时,结果是一个元素或null。当您使用$$ 时,结果不是一个元素,而是一个Array,可以轻松迭代。这与原生的 querySelectorAll 不同,它返回一个 NodeList,这稍微难以遍历所有条目。

关于报价:当然它的工作原理是一样的。见:

结论:引用trump是没用的。你也可能会发疯。

【讨论】:

  • 谢谢。那么,从 querySelector() 和 querySelectorAll() 的工作方式的不同来看,例如,在 $$ 情况下与 $ 情况相反的属性值周围的撇号的需求差异?
  • @StasS 我编辑了我的答案。这是否回答你的问题 ?如果没有,请提供更多代码来证明您的问题。
  • 谢谢 Denys,但我问的有点不同。编辑我的代码来演示它。有一种语法适用于 $ case 但不适用于 $$。据我了解,底层实现代码应该有一些一致性。
  • @StasS 你仍然没有提供足够的代码来重现你的错误。您确定您在我的回答中发现了最后一段吗?我认为它解释了为什么你有一个错误:节点列表不是一个元素。
  • 2017年我在这里,可以确认特朗普确实没用,再投一个赞成票
猜你喜欢
  • 2010-11-30
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 2010-12-14
相关资源
最近更新 更多