2010-11-16 19 views
0

我发现这段代码在一个jQuery插件:在jQuery中,指定ID时添加选择器上下文是否有意义?

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

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

UPDATE:

@casablanca - 你确定它只是调用本地的getElementById()?因为我将该行更改为document.getElementById('id').style.display = "none",并且性能变得更快(因为该行在循环内)。顺便说一下,我使用IE8进行了测试。

回答

2

似乎有必要。但我反正做了一个快速的test here。发现是,jQuery(毫不奇怪)不关心你的#id是否是唯一的。在代码:

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

这将返回test2的,这是正确的范围内,如果我们把:

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

即没有上下文,它返回test1的内

我我猜猜你提到的插件作者背后的原因是阻止某人使用插件并意外地使用了与插件相同的ID他在那里使用。这可以确保无论你在HTML中输入什么内容,他的插件都能正常工作。

感谢您的发现。我想我会将其包含在创作插件中。

1

不,它根本没有帮助。如果您指定ID,则直接通过本地document.getElementById方法检索该元素,该方法不需要任何上下文,并且速度非常快。

相关问题