我试图弄清楚这个jquery选择器正在做什么。当它运行时,它正在大规模执行并且删除它会使执行速度提高大约95%。优化的代码在没有它的情况下工作正常,但我仍然试图弄清楚它在做什么。
以下是原始代码格式:
$("[name='" + this.Name + "']", $(document.body))...
我想弄清楚的是逗号之后的内容。它不是选择器的正常部分,因为它不在主要的引号批次之内,而且我没有找到任何类似这样的文档。代码缩减为
时$("[name=\"" + this.Name + "\"]")
然后它以大幅提高的速度运行(快95%)。有谁知道额外$(document.body)
正在做什么?
答案 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以获得有关该主题的详细讨论。