Selettore di jQuery:Id Finisce Con?
-
03-07-2019 - |
Domanda
C'è un selector
che posso eseguire query per elementi con un ID che si conclude con una determinata stringa?
Dire che ho un elemento con id ctl00$ContentBody$txtTitle
.Come posso ottenere questo passaggio proprio txtTitle
?
Soluzione
Se conosci il tipo di elemento, allora: (es: sostituisci "element" con "div")
$("element[id$='txtTitle']")
Se non conosci il tipo di elemento:
$("[id$='txtTitle']")
Ulteriori informazioni disponibili
// 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" />
Altri suggerimenti
La risposta alla domanda è $("[id$='txtTitle']")
, Mark Hurd ha risposto, si , ma per chi, come me, desidera trovare tutti gli elementi con un id che inizia con una data stringa (per esempio txtTitle), provate questo: (doc) :
$("[id^='txtTitle']")
Se si desidera selezionare gli elementi che id contiene una data stringa (doc) :
$("[id*='txtTitle']")
Se si desidera selezionare gli elementi che id non è una data stringa (doc) :
$("[id!='myValue']")
(corrisponde anche gli elementi che non hanno l'attributo specificato)
Se si desidera selezionare gli elementi che id contiene una parola data, delimitata da spazi (doc) :
$("[id~='myValue']")
Se si desidera selezionare gli elementi che id è pari a una data stringa di partenza, o con quella stringa seguita da un trattino (doc) :
$("[id|='myValue']")
Prova
$("element[id$='txtTitle']");
modifica: 4 secondi in ritardo: P
$('element[id$=txtTitle]')
Non è strettamente necessario citare il frammento di testo a cui stai confrontando
È più sicuro aggiungere il trattino basso o $ al termine che stai cercando, quindi è meno probabile che corrisponda ad altri elementi che terminano con lo stesso ID:
$("element[id$=_txtTitle]")
(dove elemento è il tipo di elemento che stai cercando di trovare, ad esempio div
, input
ecc.
(Nota, stai suggerendo che i tuoi ID tendono ad avere $ segni in essi, ma penso che .NET 2 ora tenda invece a usare i trattini bassi nell'ID, quindi il mio esempio usa un trattino basso).
Un esempio:
per selezionare tutti i <a>
s con ID che termina in _edit:
jQuery("a[id$=_edit]")
o
jQuery("a[id$='_edit']")
Dato che questo è ASP.NET, puoi semplicemente usare ASP <% =% > tag per stampare il ClientID generato di txtTitle:
$('<%= txtTitle.ClientID %>')
Ciò comporterà ...
$('ctl00$ContentBody$txtTitle')
... quando viene visualizzata la pagina.
Nota: in Visual Studio, Intellisense ti urlerà per aver inserito i tag ASP in JavaScript. Puoi ignorarlo poiché il risultato è JavaScript valido.
Prova questo:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find('[id*="_h"').val();
Per trovare un id iframe che termina con " iFrame " all'interno di una pagina contenente molti iframe.
jQuery(document).ready(function (){
jQuery("iframe").each(function(){
if( jQuery(this).attr('id').match(/_iFrame/) ) {
alert(jQuery(this).attr('id'));
}
});
});