用于服务器端控制的 jQuery 选择器



$('#<%=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 分配给多个元素,如果你想遍历所有这些元素,那么第一种情况将无法正常工作。

最新更新