<div id="test"></div>
<script>
$(document).ready(function() {
alert($('#test').id);
});
</script>
Por que o procedimento acima não funciona e como devo fazer isso?
jquery
jquery-selectors
fearofawhackplanet
fonte
fonte
Respostas:
A maneira jQuery:
No seu exemplo:
Ou através do DOM:
ou até:
e a razão por trás do uso
$('#test').get(0)
no JQuery ou mesmo$('#test')[0]
é que$('#test')
é um seletor JQuery e retorna uma matriz () de resultados, não um único elemento por sua funcionalidade padrãouma alternativa para o seletor DOM no jquery é
que é diferente
.attr()
e$('#test').prop('foo')
captura afoo
propriedade DOM especificada , enquanto$('#test').attr('foo')
captura ofoo
atributo HTML especificado e você pode encontrar mais detalhes sobre diferenças aqui .fonte
$('#test').id()
.$('selector').attr('id')
retornará o ID do primeiro elemento correspondente. Referência .Se seu conjunto correspondente contiver mais de um elemento, você poderá usar o
.each
iterador convencional para retornar uma matriz contendo cada um dos IDs:Ou, se você quiser ficar um pouco mais duro, evite o invólucro e use o
.map
atalho .fonte
retval.push($(this).attr('id'))
pode ser escritoretval.push(this.id)
return $('.selector').map(function(i, dom){ return $(dom).attr('data-id'); })
id
é uma propriedade de um htmlElement
. No entanto, quando você escreve$("#something")
, ele retorna um objeto jQuery que envolve os elementos DOM correspondentes. Para recuperar o primeiro elemento DOM correspondente, chameget(0)
Nesse elemento nativo, você pode chamar o ID ou qualquer outra propriedade ou função DOM nativa.
Essa é a razão pela qual
id
não está funcionando no seu código.Como alternativa, use o
attr
método jQuery, pois outras respostas sugerem obter oid
atributo do primeiro elemento correspondente.fonte
As respostas acima são ótimas, mas à medida que o jquery evolui ... você também pode:
fonte
attr()
foi adicionado na versão 1.0, e na versãoprop()
1.6, por isso estou assumindo que o seu comentário foiprop()
o novo caminho.attr
) ou na potencialmente modificada pelo script (prop
). Se você não está realmente modificando oid
atributo de qualquer elemento usando o script do lado do cliente, em seguida,prop
eattr
são idênticos.É necessário algum código de verificação, é claro, mas facilmente implementado!
fonte
.id
não é uma função jquery válida. Você precisa usar a.attr()
função para acessar atributos que um elemento possui. Você pode usar.attr()
para alterar um valor de atributo especificando dois parâmetros ou obter o valor especificando um.http://api.jquery.com/attr/
fonte
Se você deseja obter um ID de um elemento, digamos, por um seletor de classe, quando um evento (neste caso, clique em evento) foi acionado nesse elemento específico, o seguinte fará o trabalho:
fonte
$('#test').attr('id')
No seu exemplo:fonte
Bem, parece que não houve uma solução e gostaria de propor minha própria solução, que é uma expansão do protótipo JQuery. Coloquei isso em um arquivo Helper carregado após a biblioteca JQuery, portanto, a verificação de
window.jQuery
Pode não ser perfeito, mas é um começo para talvez ser incluído na biblioteca JQuery.
Retorna um único valor de sequência ou uma matriz de valores de sequência. A matriz de valores de sequência é para o evento em que um seletor de vários elementos foi usado.
fonte
$('#test')
retorna um objeto jQuery; portanto, você não pode usar simplesmenteobject.id
para obter seuId
você precisa usar
$('#test').attr('id')
, que retorna as informações necessáriasID
do elementoIsso também pode ser feito da seguinte maneira:
$('#test').get(0).id
que é igual adocument.getElementById('test').id
fonte
$('#test')[0].id
que é o mesmo que.get(0)
Talvez útil para outras pessoas que encontrarem este tópico. O código abaixo só funcionará se você já usa o jQuery. A função retorna sempre um identificador. Se o elemento não tiver um identificador, a função gera o identificador e anexa-o ao elemento.
Como usar:
fonte
Usando o código acima, você pode obter o id.
fonte
Esta é uma pergunta antiga, mas a partir de 2015 isso pode realmente funcionar:
E você também pode fazer atribuições:
Contanto que você defina o seguinte plug-in JQuery:
Curiosamente, se
element
é um elemento DOM, então:fonte
Como o ID é um atributo, você pode obtê-lo usando o
attr
métodofonte
Pode ser a identificação do elemento, classe ou automaticamente usando
fonte
Importante: se você estiver criando um novo objeto com jQuery e vinculando um evento, DEVE usar prop e não attr , assim:
$("<div/>",{ id: "yourId", class: "yourClass", html: "<span></span>" }).on("click", function(e) { alert($(this).prop("id")); }).appendTo("#something");
fonte
Isso finalmente resolverá seus problemas:
digamos que você tenha muitos botões em uma página e deseje alterar um deles com o jQuery Ajax (ou não o ajax), dependendo de seu ID.
digamos também que você possui muitos tipos diferentes de botões (para formulários, para aprovação e para propósitos semelhantes) e deseja que o jQuery trate apenas os botões "like".
Aqui está um código que está funcionando: o jQuery tratará apenas os botões da classe .cls-hlpb, pegará o ID do botão que foi clicado e o alterará de acordo com os dados provenientes do ajax.
O código foi retirado do w3schools e alterado.
fonte
fonte
não responde ao OP, mas pode ser interessante para outras pessoas: você pode acessar o
.id
campo neste caso:fonte