为什么jQuery中的.selector属性不存储有效的选择器值?

为什么jQuery中的.selector属性不存储有效的选择器值?,jquery,Jquery,假设我的HTML与此类似: <div class="fooContainer"> <div class="barContainer"> <a href="#">foo-bar</a> </div> </div> 这非常好,因为$fooContainer现在保存对DOM中元素的引用 当我现在打印出选择器值时,如下所示: console.log($fooContainer.selector)

假设我的HTML与此类似:

<div class="fooContainer">
    <div class="barContainer">
        <a href="#">foo-bar</a>
    </div>
</div>
这非常好,因为
$fooContainer
现在保存对DOM中元素的引用

当我现在打印出
选择器
值时,如下所示:

console.log($fooContainer.selector)
$("a.parents(.fooContainer)")
我得到值
a.parents(.fooContainer)

我的印象是,
选择器
属性返回一个字符串,该字符串本身就是一个有效的选择器值

但当尝试将其用作选择器时,情况并非如此:

console.log($fooContainer.selector)
$("a.parents(.fooContainer)")
在jQuery 1.7.2中找不到匹配项。
在最新的jQuery1.8.x中,它甚至抛出了一个异常:
Error:Syntax Error,无法识别的表达式:a.parents(.fooContainer)

  • 为什么选择器属性不包含有效的选择器值
  • 如果没有,将使用
    选择器
    属性做什么
我尝试在jQuery中搜索信息,但找不到任何与该属性相关的内容。

您可以轻松阅读,但未记录的内容是内部和私有的

根据定义


因此,这是一个实现细节,您确实不应该尝试使用这个属性,因为没有任何保证,无论是对于未来版本,还是对于您今天可能想象的任何用途。

这是一个私有属性(如“未在API中记录”)属性。您知道您要求我们解释库的内部实现吗?在API文档中找不到
.selector
的原因可能是因为它仅用于内部使用。你根本不会被要求使用它,你也不会在任何地方找到它的文档。@dystroy:谢谢你的回复。我不知道
.selector
是私有的。如果它只用于内部使用,我非常乐意远离它:)无需向我解释内部实现。不过,我很想看看关于它的任何文档。我在哪里可以找到这些信息?如果您感到好奇,您可能还想了解更多关于Sizzle(jQuery使用的选择器引擎)的信息:我最初投票决定关闭,因为API实现通常被认为是不可争论的(应该与代码所有者讨论)。然后我再次想到,这是一个可访问的属性,jQuery不仅仅是一个封闭公司的小组件,而且是一个最常用的库和一个非常小(因此可以研究)的开放源代码。这就是我回答的原因。我不能取消我的投票,但我现在可以投票重新开放。我们无法讨论的私有实现与本案例之间的界限很窄,因此存在此类问题的风险。这非常有趣。谢谢你提供的所有有用的信息。我不知道
如果没有文档,它是内部的或私有的。
我100%同意你的上一句话。这很危险。我只是想确保我没有错过文档。我以前没有使用过
.selector
,但今天我注意到它时,我认为它是我可以使用的。现在很清楚,不,不是:)我会记得你对文档所说的。非常感谢。他们现在有一个名为internal的部分,我认为这意味着私有API。以下是有关的[稀疏]文档。