$('#<%=lblName.ClientID%>')
和 和有什么不一样$("[id$=lblName]")
?
4 回答
$('#<%=lblName.ClientID%>')
将找到具有ASP.Net 中的id
属性提供的属性的元素。ClientID
$("[id$=lblName]")
将找到一个id
属性以 结尾的元素lblName
,例如foo-lblName
.
第一个($('#<%=lblName.ClientID%>')
),id 选择器,将通过其 ID 找到一个元素。这非常快,因为它将使用本机document.getElementById
第二个,属性以选择器结尾,以不同的方式工作。例如,在 IE 中,如果它以提供的值(或类似的东西)结尾,它将获取所有元素和每个元素的测试 ID。那要慢得多。在较新的浏览器中,可能会使用querySelectorAll来查找该选择器的元素,但我不确定该功能是否支持它(好吧,这里它的定义类似于 vailid css3 所以假设现代浏览器将支持以querySelectorAll 中的选择器)。
因此,总而言之,id 选择器在任何情况下都应该更快,并且在旧浏览器的情况下要快得多。同时,以选择器结尾允许您在不将其客户端 ID 传递给浏览器的情况下查找元素。
只需添加我今天知道的内容,$('#<%=lblName.ClientID%>')
只会选择一个元素,但是$("[id$=lblName]")
会选择多个元素,因此如果您将相同的 id 分配给多个元素,并且如果您想遍历所有元素,那么第一种情况不会好好工作。