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
?
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" />
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']")
Essayez
$("element[id$='txtTitle']");
Edit: 4 secondes de retard: P
$('element[id$=txtTitle]')
Il n'est pas strictement nécessaire de citer le fragment de texte auquel vous correspondez
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).
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']")
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.
Essayez ceci:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find('[id*="_h"').val();
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'));
}
});
});