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