在jQuery中,在指定ID时添加选择器上下文有意义吗?
我在jQuery插件中发现了这段代码:在jQuery中,在指定ID时添加选择器上下文有意义吗?,jquery,jquery-plugins,Jquery,Jquery Plugins,我在jQuery插件中发现了这段代码: $("#"+id,$t.grid.bDiv).css("display","none"); $()的第二个参数更改了搜索的上下文,对吗?既然该行已经在搜索ID,那么包含它是否仍然有意义?指定ID时,jQuery不搜索整个文档吗 更新: @卡萨布兰卡-您确定它只调用本机getElementById()?因为我将该行更改为document.getElementById('id').style.display=“none”,性能显著提高(因为该行位于循环中)。
$("#"+id,$t.grid.bDiv).css("display","none");
$()
的第二个参数更改了搜索的上下文,对吗?既然该行已经在搜索ID,那么包含它是否仍然有意义?指定ID时,jQuery不搜索整个文档吗
更新:
@卡萨布兰卡-您确定它只调用本机getElementById()?因为我将该行更改为
document.getElementById('id').style.display=“none”
,性能显著提高(因为该行位于循环中)。顺便说一下,我使用IE8进行了测试。不,它根本没有帮助。如果指定ID,则直接通过本机方法检索元素,本机方法不需要任何上下文,而且速度非常快。不,根本没有帮助。如果指定ID,则直接通过本机方法检索元素,该方法不需要任何上下文,而且速度非常快。这似乎是必要的。但我还是做了一个快速的测试。结果是,jQuery(毫不奇怪)并不关心您的#id是否唯一。在守则中:
alert($("#test", ".test2").html());
这将在test2中返回,这是正确的,如果我们将:
alert($("#test").html());
i、 没有上下文,它在test1中返回
我猜你提到的插件编写器背后的原因是为了防止使用插件的人意外地使用与他在那里使用的ID相同的ID。这确保了无论你在HTML中键入什么,他的插件都能正常工作
谢谢你的发现。我想我应该在编写插件时包含这一点 这似乎是必要的。但我还是做了一个快速的测试。结果是,jQuery(毫不奇怪)并不关心您的#id是否唯一。在守则中:
alert($("#test", ".test2").html());
这将在test2中返回,这是正确的,如果我们将:
alert($("#test").html());
i、 没有上下文,它在test1中返回
我猜你提到的插件编写器背后的原因是为了防止使用插件的人意外地使用与他在那里使用的ID相同的ID。这确保了无论你在HTML中键入什么,他的插件都能正常工作
谢谢你的发现。我想我应该在编写插件时包含这一点