Y a-t-il un selector
que je puisse rechercher les éléments dont l'ID se termine par une chaîne donnée ?
Disons que j'ai un élément avec un id de ctl00$ContentBody$txtTitle
. Comment puis-je obtenir cela en passant juste txtTitle
?
Y a-t-il un selector
que je puisse rechercher les éléments dont l'ID se termine par une chaîne donnée ?
Disons que j'ai un élément avec un id de ctl00$ContentBody$txtTitle
. Comment puis-je obtenir cela en passant juste txtTitle
?
Si vous connaissez le type d'élément, alors : (ex : remplacez 'element' par 'div')
$("element[id$='txtTitle']")
Si vous ne connaissez pas le type d'élément :
$("[id$='txtTitle']")
Plus d'informations disponibles
// the old way, needs exact ID: document.getElementById("hi").value = "kk";
$(function() {
$("[id$='txtTitle']").val("zz");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="ctl_blabla_txtTitle" type="text" />
Je chercherais à ce qu'il se termine par "$txtTitle". Le risque est moindre avec le préfixe 'txt', mais si votre sélecteur est 'NameTextBox', il correspondra à 'NameTextBox', 'FirstNameTextBox', LastNameTextBox', etc.
Un utilisateur anonyme vient d'essayer d'éditer le texte suivant dans. Je l'ajoute en commentaire (car cela semble avoir du sens) : Cela ne donne pas les éléments se terminant par l'id txtTitle. Voici la documentation : api.jquery.com/element-selector Le sélecteur d'éléments est l'équivalent de getElementsByTagName. Il n'a rien à voir avec l'identifiant de l'élément. Si vous voulez accéder aux éléments se terminant par id, utilisez cette syntaxe $("[id$='txtTitle']") ou si vous connaissez le type de l'élément ..par exemple div ..alors utilisez cette syntaxe $("div[id$='txtTitle']")
Le lien a été très utile. Pas la page elle-même, mais elle a donné lieu à deux pages supplémentaires, dont j'avais besoin. J'ai appris comment capturer des segments d'un titre, par exemple, si l'ID apparaît comme "masterPage1_Control0_MyTableName_moreStuff" dans View Source, je peux me verrouiller sur ma table de <asp:Table ID="MyTable" ... en utilisant $("id*=MyTable]"). En y réfléchissant, je préfère id$. Hmmm...
La réponse à la question est $("[id$='txtTitle']")
, comme Mark Hurd a répondu mais pour ceux qui, comme moi, veulent trouver tous les éléments dont l'id est le suivant commence par une chaîne donnée (par exemple txtTitle), essayez ceci ( doc ) :
$("[id^='txtTitle']")
Si vous voulez sélectionner des éléments dont l'id contient une chaîne de caractères donnée ( doc ) :
$("[id*='txtTitle']")
Si vous voulez sélectionner des éléments dont l'id n'est pas une chaîne de caractères donnée ( doc ) :
$("[id!='myValue']")
(il correspond également aux éléments qui n'ont pas l'attribut spécifié)
Si vous voulez sélectionner des éléments dont l'id contient un mot donné, délimité par des espaces ( doc ) :
$("[id~='myValue']")
Si vous voulez sélectionner des éléments dont l'id est égale à une chaîne donnée ou commençant par cette chaîne suivie d'un trait d'union ( doc ) :
$("[id|='myValue']")
Si vous ajoutez celle qui répond réellement à la question, c'est-à-dire $("[id$='txtTitle']") et que vous la placez en premier dans la liste, je voterais pour votre réponse. Je ne peux pas pour le moment car vous ne répondez pas à la question.
@AlanMacdonald Je ne suis pas sûr que ce soit bien de l'ajouter. J'ai répondu à la question longtemps après qu'une réponse ait été acceptée, juste pour ajouter plus d'informations pour les visiteurs. J'espère que les personnes qui upvotent ma réponse upvotent également la réponse à la question.
@RomainGuidoux assez juste, c'est votre choix, mais je n'upvote pas les réponses qui n'offrent pas de solution à la question posée parce que ce n'est pas évident pour les nouveaux venus qui rencontrent le même problème que le PO s'ils viennent sur la page et qu'il y a une réponse votée qui ne répond même pas à la question. Si vous la modifiez pour répondre à la question, je mettrais en avant votre réponse au lieu de la réponse acceptée, car elle est plus complète et plus utile. Ou alors, il aurait dû s'agir d'un commentaire sur la réponse acceptée plutôt que d'une réponse à la question.
Il est plus prudent d'ajouter le trait de soulignement ou $ au terme que vous recherchez, afin de réduire les risques de correspondance avec d'autres éléments se terminant par le même ID :
$("element[id$=_txtTitle]")
(où élément est le type d'élément que vous essayez de trouver - ex. div
, input
etc.
(Remarque : vous suggérez que vos ID ont tendance à contenir des signes $, mais je pense que .NET 2 a maintenant tendance à utiliser des tirets bas dans l'ID, donc mon exemple utilise un tiret bas).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
17 votes
Le bon vieux maître de l'identification des pages !
1 votes
Définir
ClientIDMode=static
à partir de ASP.Net 4.0 et se débarrasser de ce problème :)1 votes
ClientIDMode=static ne fonctionnera pas pour ceux qui essaient de trouver un élément dans un répéteur !