jQuery 选择器 $( "element" , $(document.body)) 有什么作用?



我正试图弄清楚这个jquery选择器到底在做什么。当它运行时,它正在大规模执行,删除它会使执行速度提高大约95%。优化后的代码在没有它的情况下运行良好,但我仍在努力弄清楚它最初在做什么。

这是原始代码格式:

$("[name='" + this.Name + "']", $(document.body))...

我想弄清楚的是逗号后面是什么。这不是选择器的一个正常部分,因为它在主要的一批报价之外,我根本没有找到类似的文档。当代码减少为时

$("[name="" + this.Name + ""]")

则它以大幅提高的速度(快95%)运行。有人知道那个额外的$(document.body)在干什么吗?

$()函数的第二个参数是context。这和做是一样的

$(document.body).find("[name='" + this.Name + "']")

(这是完全无用的,因为标签通常不在文档正文之外。)

附言:您不需要在$()中包装第二个参数,它可以是DOM元素(甚至是选择器)。

$("[name='" + this.Name + "']", document.body) // this may be faster than
                                               // $(document.body)
$("[name='" + this.Name + "']", 'body')  // This is also valid

它只是定义选择器应该操作的上下文。在您的示例中,它显式地将文档主体设置为上下文,但您可以使用DOM中的任何元素。退房http://brandonaaron.net/blog/2009/06/24/understanding-the-context-in-jquery以便对该主题进行良好的讨论。

最新更新