用于服务器端控制的jQuery Selector

时间:2012-12-05 10:55:16

标签: jquery asp.net

$('#<%=lblName.ClientID%>')$("[id$=lblName]")之间的区别是什么?

4 个答案:

答案 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分配给多个元素,并且你想遍历所有这些,然后第一个案例将无法正常工作。