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

时间:2012-03-19 18:58:31

标签: javascript jquery

我试图弄清楚这个jquery选择器正在做什么。当它运行时,它正在大规模执行并且删除它会使执行速度提高大约95%。优化的代码在没有它的情况下工作正常,但我仍然试图弄清楚它在做什么。

以下是原始代码格式:

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

我想弄清楚的是逗号之后的内容。它不是选择器的正常部分,因为它不在主要的引号批次之内,而且我没有找到任何类似这样的文档。代码缩减为

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

然后它以大幅提高的速度运行(快95%)。有谁知道额外$(document.body)正在做什么?

2 个答案:

答案 0 :(得分:3)

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

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

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

P.S。你不需要在$()中包装第二个参数,它可以是一个DOM元素(甚至是一个选择器)。

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

答案 1 :(得分:1)

它只是定义了选择器应该操作的上下文。在您的示例中,它将文档正文显式设置为上下文,但您可以使用DOM中的任何元素。查看http://brandonaaron.net/blog/2009/06/24/understanding-the-context-in-jquery以获得有关该主题的详细讨论。