2012-12-05 29 views

回答

22

$('#<%=lblName.ClientID%>')將在ASP.Net中的ClientID屬性中找到具有id屬性的元素。

$("[id$=lblName]")將找到具有以lblName結尾的id屬性的元素,例如foo-lblName

+0

對於任何想要選擇其中一個的人,如果你有一個使用控制頁面(ascx)多於一次的頁面 - $(「[id $ = lblName]」)將包含多於1個元素id以該名稱結束。所以在這種情況下'$('#<%= lblName.ClientID%>')'將成爲控件的唯一選擇器 –

1

第一個($('#<%=lblName.ClientID%>')),id選擇,就會發現通過其ID的元件。這是非常快的,因爲它會使用原生的document.getElementById

第二個,Attribute Ends With selector,以不同的方式工作。例如,在IE中,如果以提供的值(或類似的東西)結尾,它將獲得每個元素的所有元素和測試ID。這太慢了。在較新的瀏覽器中有querySelectorAll這可能會被用來找到該選擇器的元素,但我不確定它是否被該功能支持(好吧,here它被定義爲vailid css3,所以假設現代瀏覽器將支持以選擇器在querySelectorAll)。

因此,總而言之,id選擇器在任何情況下都應該更快,而在舊的瀏覽器中應該快得多。同時,選擇符的結尾允許您在不將其客戶端ID傳遞給瀏覽器的情況下查找元素。

0

剛剛加入我今天才知道的,$('#<%=lblName.ClientID%>')只會選擇一個元素,但是$("[id$=lblName]")會選擇多個元素,所以如果你有相同的id分配給多個元素,並且你想遍歷所有的他們然後第一個案件將無法正常工作。