sélecteur jQuery: Id se termine par?

Y a-t-il un selector que je peux interroger pour les éléments avec un ID qui se termine par une chaîne donnée?

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

349
demandé sur raBne 2009-03-04 08:56:22

9 réponses

Si vous connaissez le type d'élément, alors: (par exemple: remplacez 'element' par 'div')

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

Si vous ne connaissez pas le type d'élément:

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

Plus d'informations sont 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" />
570
répondu Mark Hurd 2016-09-26 13:02:04

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 avec un id qui commence par une chaîne donnée (par exemple txtTitle), essayez ceci (doc) :

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

Si vous souhaitez sélectionner des éléments dont l'id contient une chaîne de caractères (doc) :

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

Si vous souhaitez sélectionner des éléments dont l'id n'est pas une chaîne de caractères (doc) :

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

(il a également correspond 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 (de réf) :

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

Si vous voulez 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 (de réf) :

$("[id|='myValue']")
232
répondu Romain Guidoux 2017-05-23 12:26:32

Essayez

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

Edit: 4 secondes de retard: P

31
répondu kkyy 2009-03-04 06:06:46
$('element[id$=txtTitle]')

Il n'est pas strictement nécessaire de citer le fragment de texte auquel vous correspondez

29
répondu Scott Evernden 2009-03-20 14:50:46

Il est plus sûr d'ajouter le trait de soulignement ou $ au terme que vous recherchez, donc il est moins susceptible de correspondre à d'autres éléments qui se terminent par le même ID:

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

(où élément de est le type d'élément que vous essayez de trouver - par exemple div, input etc.

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

13
répondu Nick Gilbert 2013-07-29 16:01:59

Un exemple: pour sélectionner tous les <a> s dont L'ID se termine par _edit:

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

Ou

jQuery("a[id$='_edit']")
3
répondu Anton K 2010-07-22 08:24:26

Puisque c'est ASP.NET, vous pouvez simplement utiliser la balise ASP pour imprimer le ClientID généré de txtTitle:

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

Cela se traduira par...

$('ctl00$ContentBody$txtTitle')

... lorsque la page est rendue.

Remarque: Dans Visual Studio, Intellisense vous criera après avoir mis des balises ASP en JavaScript. Vous pouvez l'ignorer car le résultat est JavaScript valide.

3
répondu Michael 2012-10-19 15:27:42

Essayez ceci:

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

var test = $(this).find('[id*="_h"').val();
1
répondu pawel 2012-05-09 11:46:21

Afin de trouver un id 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
répondu neelmeg 2011-12-06 20:32:43