2012-12-05 11 views

Antwort

22

$('#<%=lblName.ClientID%>') finden ein Element mit dem id-Attribut wie von der Eigenschaft ClientID in ASP.Net bereitgestellt.

$("[id$=lblName]") wird ein Element mit einem id Attribute finden, die mit lblName endet, zum Beispiel foo-lblName.

+0

für alle, die eine von ihnen wählen möchten, wenn Sie eine Seite haben, die mehr als einmal eine Kontrollseite (ascx) verwendet - '$ (" [id $ = lblName] ")' enthält mehr als 1 Element mit einem ID endet mit diesem Namen. In dieser Situation wird '$ ('# <% = lblName.ClientID%>')' ein eindeutiger Selektor für das Steuerelement sein –

1

ersten ($('#<%=lblName.ClientID%>')), id-Selektor, wird ein Element von seiner ID finden. Das ist sehr schnell, da es native verwendet document.getElementById

Zweite, Attribute Ends With selector, funktioniert auf andere Weise. In IE zum Beispiel wird es alle Elemente und Test-ID jedes Elements erhalten, wenn es mit bereitgestellten Wert (oder etwas Ähnliches) endet. Das ist viel langsamer. In neueren Browsern gibt es querySelectorAll, die möglicherweise verwendet werden, um ein Element von diesem Selektor zu finden, aber ich bin nicht sicher, ob es von diesen Funktionen unterstützt wird (Nun, here ist definiert wie vailid css3, also angenommen moderne Browser unterstützen endet mit Selektor in querySelectorAll).

Also abschließend sollte ID-Selektor in jedem Fall schneller und viel schneller im Falle von alten Browsern sein. Zur gleichen Zeit, endet mit Selektor können Sie ein Element finden, ohne seine Client-ID an den Browser übergeben.

0

Wenn ich nur hinzufüge, was ich heute kennengelernt habe, wird $('#<%=lblName.ClientID%>') nur ein Element auswählen, aber $("[id$=lblName]") wird mehr als ein Element auswählen, also wenn Sie dieselbe ID mehreren Elementen zugewiesen haben und wenn Sie alle Elemente durchlaufen möchten Dann wird der erste Fall nicht richtig funktionieren.