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?

È stato utile?

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'));

                     }                   
                  });     
         });
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top