Eu tenho vários elementos em uma página HTML que têm a mesma classe - mas eles são tipos de elementos diferentes. Quero descobrir o nome da marca do elemento conforme faço um loop sobre eles - mas .attr não aceita "tag" ou "tagname".
Aqui está o que quero dizer. Considere estes elementos em uma página:
<h1 class="rnd">First</h1>
<h2 id="foo" class="rnd">Second</h2>
<h3 class="rnd">Third</h3>
<h4 id="bar" class="rnd">Fourth</h4>
Agora quero executar algo assim para garantir que todos os meus elementos tenham um id, caso ainda não tenha sido definido:
$(function() {
$(".rnd").each(function(i) {
var id = $(this).attr("id");
if (id === undefined || id.length === 0) {
// this is the line that's giving me problems.
// .attr("tag") returns undefined
$(this).attr("id", "rnd" + $(this).attr("tag") + "_" + i.toString());
}
});
});
O resultado que eu gostaria seria que os elementos H2 e H4 teriam um id de
rndh2_1
rndh4_3
respectivamente.
Alguma idéia de como posso descobrir o nome da tag do elemento representado por "this"?
javascript
jquery
BigPigVT
fonte
fonte
Respostas:
deveria estar
fonte
Você pode tentar isto:
Veja o documentação para mais informações sobre is ().
fonte
nodeName
retorna uma string que, dependendo do navegador, é maiúscula ou não.is('*')
em anos. Provavelmente não vai responder ao OP, mas funcionou para mim, obrigado, @middus!Já que já respondi a essa pergunta uma vez e isso não me ajudou no meu caso (eu não tinha um
this
, mas em vez disso tinha uma instância do seletor jQuery). Chamarget()
irá obter o elemento HTML, pelo qual você pode obter onodeName
conforme mencionado acima.ou
fonte
Você também pode usar
$(this).prop('tagName');
se estiver usando jQuery 1.6 ou superior.fonte
Sim. Você pode usar o código abaixo:
fonte
Acho que você não pode usar o
nodeName
em jQuery, pois nodeName é uma propriedade DOM e o próprio jQuery não tem umanodeName
função ou propriedade. Mas, com base no entrevistado que mencionou pela primeira vez sobre essasnodeName
coisas, foi assim que consegui resolver o problema:NOTA:
this
aqui está um objeto jQuery.fonte
Já que esta é uma pergunta que você vem no google usando jquery tagname first child como uma consulta, postarei outro exemplo:
O resultado do jquery é um tagname (maiúsculo): P
fonte
Você pode obter o nome da tag do elemento html em toda a página.
Você pode usar:
fonte
observação: substitua pelo seu seletor (h1, h3 ou ...)
fonte
Acabei de escrever para outra edição e achei que pode ajudar qualquer um de vocês também.
Uso:
onclick="_DOM_Trackr(this);"
Parâmetros:
Código fonte:
fonte
html > body > div#coreApp > div#productpage > div#productpage-wrapper > div > div > div > div > div#pthumb12 > form#thumb_uploader_src > input
$('*').each(function(_i,_e){$(_e).attr('title',_DOM_Trackr(_e,true));});
A melhor maneira de resolver seu problema é substituí-lo
$(this).attr("tag")
porthis.nodeName.toLowerCase()
outhis.tagName.toLowerCase()
.Ambos produzem exatamente o mesmo resultado!
fonte
Considere o método FILTER rápido :
retorna:
tão:
fonte
Em vez disso, basta fazer:
fonte