web-dev-qa-db-fra.com

jQuery Selector: Id se termine par?

Existe-t-il un selector que je puisse rechercher pour les éléments avec un ID se terminant par une chaîne donnée?

Disons que j'ai un élément avec un identifiant de ctl00$ContentBody$txtTitle. Comment puis-je l'obtenir en passant juste txtTitle?

375
Josh Stodola

Si vous connaissez le type d'élément alors: (par exemple: remplacez 'élément' 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" />
603
Mark Hurd

La réponse à la question est $("[id$='txtTitle']"), comme Mark Hurd a répond , mais pour ceux qui, comme moi, veulent trouver tous les éléments avec un identifiant id commence par une chaîne donnée (par exemple txtTitle), essayez ceci ( doc ):

$("[id^='txtTitle']")

Si vous souhaitez sélectionner des éléments dont id contient une chaîne donnée ( doc ):

$("[id*='txtTitle']")

Si vous souhaitez sélectionner des éléments dont id n'est pas une chaîne donnée ( doc ):

$("[id!='myValue']")

(il correspond également aux éléments qui n'ont pas l'attribut spécifié)

Si vous souhaitez sélectionner des éléments dont id contient un mot donné, délimités par des espaces ( doc ):

$("[id~='myValue']")

Si vous souhaitez sélectionner des éléments dont l'id est égal à une chaîne donnée ou commençant par cette chaîne suivie d'un trait d'union ( doc ):

$("[id|='myValue']")
241
Romain Guidoux

Essayer

$("element[id$='txtTitle']");

edit: 4 secondes de retard: P

32
kkyy
$('element[id$=txtTitle]')

Il n'est pas strictement nécessaire de citer le fragment de texte que vous comparez

30
Scott Evernden

Il est plus sûr d'ajouter le trait de soulignement ou $ au terme recherché, afin de ne pas associer d'autres éléments se terminant par le même identifiant:

$("element[id$=_txtTitle]")

(où élément est le type d'élément recherché - par exemple, div, input etc.

(Notez que vous suggérez que vos identifiants ont tendance à contenir des signes $, mais je pense que .NET 2 tend maintenant à utiliser des traits de soulignement dans l'identifiant, mon exemple utilise donc un trait de soulignement).

13
Nick Gilbert

Comme il s'agit d'ASP.NET, vous pouvez simplement utiliser la balise ASP <% =%> pour imprimer l'ID client généré de txtTitle:

$('<%= txtTitle.ClientID %>')

Cela se traduira par ...

$('ctl00$ContentBody$txtTitle')

... quand la page est rendue.

Remarque: dans Visual Studio, Intellisense vous hurlera de mettre les balises ASP en JavaScript. Vous pouvez l'ignorer car le résultat est un JavaScript valide.

3
Michael

Un exemple: pour sélectionner tous les <a>s avec un identifiant se terminant par _edit:

jQuery("a[id$=_edit]")

ou

jQuery("a[id$='_edit']")
3
Anton K

Essaye ça:

<asp:HiddenField ID="0858674_h" Value="0" runat="server" />

var test = $(this).find('[id*="_h"').val();
1
pawel

Afin de trouver un identifiant iframe se terminant par "iFrame" dans une page contenant de nombreux iframes.

jQuery(document).ready(function (){     
                  jQuery("iframe").each(function(){                     
                    if( jQuery(this).attr('id').match(/_iFrame/) ) {
                            alert(jQuery(this).attr('id'));

                     }                   
                  });     
         });
0
neelmeg