在jQuery中,在指定ID时添加选择器上下文是否有意义?

时间:2010-11-16 03:48:48

标签: jquery jquery-plugins

我在jQuery插件中找到了这段代码:

$("#"+id,$t.grid.bDiv).css("display","none");

$()的第二个参数会改变搜索的上下文,对吧?包含它是否仍然有意义,因为该行已经在搜索ID?在指定ID时,jQuery不会搜索整个文档吗?

更新:

@casablanca - 你确定它只是调用原生的getElementById()吗?因为我将该行更改为document.getElementById('id').style.display = "none"并且性能变得非常快(因为该行在循环内)。我顺便使用IE8测试过。

2 个答案:

答案 0 :(得分:2)

似乎有必要。但无论如何我做了一个快test here。结果是,jQuery(不出所料)并不关心你的#id是否独特。在代码中:

alert($("#test", ".test2").html());

这将返回test2 中的,这是正确的,如果我们放置:

alert($("#test").html());

即。没有上下文,它返回test1

中的

我猜测你提到的插件编写器背后的原因是阻止使用插件的人,并且意外地使用与他在那里使用的ID相同的ID。这确保无论您在HTML中键入什么内容,他的插件都可以正常运行。

感谢这一发现。我想我会把它包含在创作插件中。

答案 1 :(得分:1)

不,它根本没用。如果您指定ID,则直接通过本机document.getElementById方法检索该元素,该方法不需要任何上下文,无论如何都非常快。