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
?
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" />
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']")
Essayer
$("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 que vous comparez
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).
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.
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']")
Essaye ça:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find('[id*="_h"').val();
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'));
}
});
});