jQuery Selector: Id termina com?
-
03-07-2019 - |
Pergunta
Existe uma selector
que eu possa consultar para elementos com um ID que termina com uma determinada string?
Say Eu tenho um elemento com um id ctl00$ContentBody$txtTitle
. Como posso obter isso passando apenas txtTitle
?
Solução
Se você sabe o tipo de elemento, em seguida: (por exemplo: substituir 'elemento' com 'div')
$("element[id$='txtTitle']")
Se você não sabe o 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" />
Outras dicas
A resposta à pergunta é $("[id$='txtTitle']")
, como Mark Hurd respondeu , mas para aqueles que, como eu, quer encontrar todos os elementos com um id que começa com uma determinada string (por exemplo txtTitle), tente este ( doc ):
$("[id^='txtTitle']")
Se você quiser selecionar elementos que id contém uma determinada string ( doc ):
$("[id*='txtTitle']")
Se você quiser selecionar elementos que id não é uma determinada string ( doc ):
$("[id!='myValue']")
(que também coincide com os elementos que não têm o atributo especificado)
Se você quiser selecionar elementos que id contém uma determinada palavra, delimitada por espaços ( doc ):
$("[id~='myValue']")
Se você quiser selecionar elementos que ID é igual a uma determinada cadeia ou começando com essa seqüência seguido por um hífen ( doc ):
$("[id|='myValue']")
Tente
$("element[id$='txtTitle']");
edit: 4 segundos tarde: P
$('element[id$=txtTitle]')
Não é estritamente necessário citar o fragmento de texto que você está combinando contra
É mais seguro para adicionar o sublinhado ou $ para o termo que você está procurando por isso é menos provável para coincidir com outros elementos que terminam na mesma ID:
$("element[id$=_txtTitle]")
(onde elemento é o tipo de elemento que você está tentando encontrar -. Por exemplo div
, input
etc
(Note, você está sugerindo seus IDs tendem a ter $ sinais neles, mas eu acho .NET 2 agora tende a usar sublinhados na ID em vez disso, por isso o meu exemplo usa um sublinhado).
Um exemplo:
para selecionar todos os <a>
s com ID terminando em _Edit:
jQuery("a[id$=_edit]")
ou
jQuery("a[id$='_edit']")
Uma vez que este é ASP.NET, você pode simplesmente usar o ASP <% =%> para imprimir o ClientID gerado de txtTitle:
$('<%= txtTitle.ClientID %>')
Isto irá resultar em ...
$('ctl00$ContentBody$txtTitle')
... quando a página é processada.
Nota: Em Visual Studio, Intellisense vai gritar com você para colocar as tags ASP em JavaScript. Você pode ignorar isso como o resultado é válido JavaScript.
Tente isto:
<asp:HiddenField ID="0858674_h" Value="0" runat="server" />
var test = $(this).find('[id*="_h"').val();
A fim de encontrar um id iframe terminando com "iFrame" dentro de uma página que contém muitas iframe.
jQuery(document).ready(function (){
jQuery("iframe").each(function(){
if( jQuery(this).attr('id').match(/_iFrame/) ) {
alert(jQuery(this).attr('id'));
}
});
});