name - jquery selector id
Selector jQuery: ID termina con? (9)
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 de $, pero creo que .NET 2 ahora tiende a usar guiones bajos en el ID, por lo que mi ejemplo usa un guión bajo).
¿Hay un selector
que pueda consultar para elementos con una ID que termina con una cadena dada?
Digamos que tengo un elemento con un id de ctl00$ContentBody$txtTitle
. ¿Cómo puedo obtener esto pasando sólo txtTitle
?
La respuesta a la pregunta es $("[id$=''txtTitle'']")
, como contestó Mark Hurd , pero para aquellos que, como yo, quieren encontrar todos los elementos con un id que comience con una cadena dada (para ejemplo txtTitle), intente esto ( doc ):
$("[id^=''txtTitle'']")
Si desea seleccionar elementos cuyo id contenga una cadena dada ( doc ):
$("[id*=''txtTitle'']")
Si desea seleccionar elementos cuya ID no sea una cadena dada ( doc ):
$("[id!=''myValue'']")
(También coincide con los elementos que no tienen el atributo especificado)
Si desea seleccionar elementos cuyo id contenga una palabra determinada, delimitado por espacios ( doc ):
$("[id~=''myValue'']")
Si desea seleccionar elementos cuyo id sea igual a una cadena dada o que comience con esa cadena seguida de un guión ( doc ):
$("[id|=''myValue'']")
Para encontrar un id de iframe que termine con "iFrame" dentro de una página que contenga muchos iframes.
jQuery(document).ready(function (){
jQuery("iframe").each(function(){
if( jQuery(this).attr(''id'').match(/_iFrame/) ) {
alert(jQuery(this).attr(''id''));
}
});
});
Prueba esto:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find(''[id*="_h"'').val();
Si conoce el tipo de elemento, entonces: (por ejemplo: reemplace ''elemento'' con ''div'')
$("element[id$=''txtTitle'']")
Si no conoces 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" />
Tratar
$("element[id$=''txtTitle'']");
edición: 4 segundos tarde: p
Un ejemplo: para seleccionar todos los <a>
s con ID que terminen en _edit:
jQuery("a[id$=_edit]")
o
jQuery("a[id$=''_edit'']")
Ya que esto es ASP.NET, simplemente puede usar la etiqueta ASP <% =%> para imprimir el ID de cliente generado de txtTitle:
$(''<%= txtTitle.ClientID %>'')
Esto resultará en ...
$(''ctl00$ContentBody$txtTitle'')
... cuando la página está renderizada.
Nota: en Visual Studio, Intellisense le gritará por poner etiquetas ASP en JavaScript. Puede ignorar esto ya que el resultado es JavaScript válido.
$(''element[id$=txtTitle]'')
No es estrictamente necesario citar el fragmento de texto con el que se está comparando.