Pregunta

¿Hay un selector que puedo consultar para elementos con una ID que termina con una cadena dada?

Digamos que tengo un elemento con una identificación de ctl00$ContentBody$txtTitle. ¿Cómo puedo obtener esto pasando solo txtTitle?

¿Fue útil?

Solución

Si conoce el tipo de elemento, entonces: (por ejemplo: reemplace 'elemento' con 'div')

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

Si no conoce el tipo de elemento:

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

Más información disponible


// 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" />

Otros consejos

La respuesta a la pregunta es $("[id$='txtTitle']"), como Mark Hurd respondió , pero para aquellos que, como yo, desea encontrar todos los elementos con una identificación que comienza con una cadena dada (por ejemplo, txtTitle), intente esto ( doc ):

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

Si desea seleccionar elementos cuya identificación contiene una cadena dada ( doc ):

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

Si desea seleccionar elementos cuya identificación no es una cadena dada ( doc ):

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

(también coincide con los elementos que no tienen el atributo especificado)

Si desea seleccionar elementos cuya identificación contiene una palabra determinada, delimitada por espacios ( doc ):

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

Si desea seleccionar elementos cuya identificación es igual a una cadena dada o que comienza con esa cadena seguida de un guión ( doc ):

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

Probar

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

editar: 4 segundos tarde: P

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

No es estrictamente necesario citar el fragmento de texto con el que está haciendo coincidir

Es más seguro agregar el guión bajo o $ al término que está buscando, por lo que es menos probable que coincida con otros elementos que terminan en la misma ID:

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

(donde elemento es el tipo de elemento que está tratando de encontrar, por ejemplo, div, input etc.

(Tenga en cuenta que está sugiriendo que sus ID tienden a tener signos $ en ellos, pero creo que .NET 2 ahora tiende a usar guiones bajos en la ID, por lo que mi ejemplo usa un guión bajo).

Un ejemplo: para seleccionar todos los <a> s con ID que terminan en _edit:

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

o

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

Como se trata de ASP.NET, puede usar ASP <% =% > etiqueta para imprimir el ClientID generado de txtTitle:

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

Esto resultará en ...

$('ctl00$ContentBody$txtTitle')

... cuando se representa la página.

Nota: en Visual Studio, Intellisense le gritará por poner etiquetas ASP en JavaScript. Puede ignorar esto ya que el resultado es JavaScript válido.

Prueba esto:

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

var test = $(this).find('[id*="_h"').val();

Para encontrar una identificación de iframe que termine con " iFrame " dentro de una página que contiene muchos iframes.

jQuery(document).ready(function (){     
                  jQuery("iframe").each(function(){                     
                    if( jQuery(this).attr('id').match(/_iFrame/) ) {
                            alert(jQuery(this).attr('id'));

                     }                   
                  });     
         });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top