jQuery Selector: ¿Id termina con?
-
03-07-2019 - |
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
?
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']")
// 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'));
}
});
});