jQuery Selector pour le contrôle côté serveur

Quelle est la différence entre $('#') et $("[id$=lblName]") ?

$('#<%=lblName.ClientID%>') recherchera un élément avec l’atsortingbut id fourni par la propriété ClientID dans ASP.Net.

$("[id$=lblName]") va trouver un élément avec un atsortingbut id qui se termine par lblName , par exemple foo-lblName .

$('#<%=lblName.ClientID%>') – # est le sélecteur d’ identifiant utilisé par JQuery pour identifier l’élément avec id.

$("[id$=lblName]") – Sélectionne tous les éléments avec l’atsortingbut id se terminant par lblName

Le premier ( $('#<%=lblName.ClientID%>') ), sélecteur d’identifiant, trouvera un élément par son identifiant. C’est très rapide car il utilisera le document.getElementById natif document.getElementById

La seconde, Atsortingbute Ends With selector , fonctionne de manière différente. Dans IE, par exemple, il obtiendra tous les éléments et testera l’ID de chaque élément s’il se termine par la valeur fournie (ou quelque chose de similaire). C’est beaucoup plus lent. Dans les nouveaux navigateurs, il y a querySelectorAll qui sera probablement utilisé pour trouver un élément à l’aide de ce sélecteur, mais je ne suis pas sûr qu’il soit pris en charge par cette fonction sélecteur dans querySelectorAll).

Donc, en conclusion, id selector devrait être plus rapide dans tous les cas et beaucoup plus rapide dans le cas d’anciens navigateurs. Dans le même temps, termine avec sélecteur vous permet de trouver un élément sans transmettre son ID client au navigateur.

En ajoutant simplement ce que j’ai appris aujourd’hui, $('#<%=lblName.ClientID%>') ne sélectionnera qu’un seul élément. Toutefois, $("[id$=lblName]") vous avez le même identifiant atsortingbué à plusieurs éléments et si vous souhaitez les parcourir tous, le premier cas ne fonctionnera pas correctement.