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?

Foi útil?

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']")

Mais informações disponíveis


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

                     }                   
                  });     
         });
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top