6

$('#<%=lblName.ClientID%>')和 和有什么不一样$("[id$=lblName]")

4

4 回答 4

22

$('#<%=lblName.ClientID%>')将找到具有ASP.Net 中的id属性提供的属性的元素。ClientID

$("[id$=lblName]")将找到一个id属性以 结尾的元素lblName,例如foo-lblName.

于 2012-12-05T10:57:24.350 回答
2

$('#<%=lblName.ClientID%>')- # 是JQuery 用来标识具有 id 的元素的 Id选择器。

$("[id$=lblName]")-将选择所有具有以 lblName结尾的 id 属性的元素

于 2012-12-05T11:03:16.120 回答
1

第一个($('#<%=lblName.ClientID%>')),id 选择器,将通过其 ID 找到一个元素。这非常快,因为它将使用本机document.getElementById

第二个,属性以选择器结尾,以不同的方式工作。例如,在 IE 中,如果它以提供的值(或类似的东西)结尾,它将获取所有元素和每个元素的测试 ID。那要慢得多。在较新的浏览器中,可能会使用querySelectorAll来查找该选择器的元素,但我不确定该功能是否支持它(好吧,这里它的定义类似于 vailid css3 所以假设现代浏览器将支持以querySelectorAll 中的选择器)。

因此,总而言之,id 选择器在任何情况下都应该更快,并且在旧浏览器的情况下要快得多。同时,以选择器结尾允许您在不将其客户端 ID 传递给浏览器的情况下查找元素。

于 2012-12-05T11:03:54.097 回答
0

只需添加我今天知道的内容,$('#<%=lblName.ClientID%>')只会选择一个元素,但是$("[id$=lblName]")会选择多个元素,因此如果您将相同的 id 分配给多个元素,并且如果您想遍历所有元素,那么第一种情况不会好好工作。

于 2012-12-17T13:25:59.933 回答