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

Nop*_*ope 6 jquery

假设我有类似这样的HTML:

<div class="fooContainer">
    <div class="barContainer">
        <a href="#">foo-bar</a>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果在脚本中我的入口点是锚点,我需要使用类fooContainer到达div,我可以这样做:

var $fooContainer = $("a").parents(".fooContainer");
Run Code Online (Sandbox Code Playgroud)

这完全正常,因为$fooContainer现在保存对DOM中元素的引用.

当我现在打印出这样的selector值:

console.log($fooContainer.selector)
Run Code Online (Sandbox Code Playgroud)

我得到了价值a.parents(.fooContainer).

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

虽然尝试将它用作这样的选择器时情况并非如此:

$("a.parents(.fooContainer)")
Run Code Online (Sandbox Code Playgroud)

它在jQuery 1.7.2中找不到匹配项.
在最新的jQuery 1.8.x中它甚至引发了一个异常:Error: Syntax error, unrecognized expression: a.parents(.fooContainer)

  • 为什么selector属性不包含有效的选择器值?
  • 如果它没有使用该selector属性的东西?

我尝试搜索jQuery 文档以获取信息,但无法找到与该属性相关的任何内容.

Den*_*ret 5

您可以轻松阅读源代码,可浏览API中未记录的内容和私有内容.

根据定义.

所以这是一个实现细节,你不应该尝试使用的属性,因为无法保证,既不是未来的版本,也不是你今天可能想象的任何用途.