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