Alguém sabe porque o método attr(string) do jQuery retorna undefined em alguns casos?
Mostra um exemplo ai
Comigo isso acontece quando eu passo um atributo que o elemento não possui, por exemplo:
retorna undefined porque o “element1” não possui o atributo “teste”
dá uma olhada na documentação do método attr():
http://api.jquery.com/attr/
Quando você usa a seguinte chamada ao método attr() passando uma string com o nome do atributo do elemento como parametro, significa que vc quer obter o valor daquele atributo
no código acima, vc recupera o valor do atributo title da primeira tag que o jquery encontrar.
já no código abaixo, passando o nome do atributo e um valor como parâmetros:
vc tá setando o valor do atributo ‘alt’ e em conseqüência disso, o método attr() te retorna o elemento em que vc tá alterando o atributo
já no código abaixo:
$(“em”).attr(“attribQueNaoExiste”);
vc ta tentando recuperar o valor de um atributo que atualmente não existe no elemento ou não está definido ainda, e por isso ele te retorna um undefined
se vc ta dando manutenção em algum código já existente, cheque um pouco mais para cima no seu script, talvez ele não esteja passando por alguma instrução que cria esse seu atributo no elemento…
entendeu ou só te confundi, rsrsrs faço isso as vezes sem querer
entendi o q vc quer dizer mas não é esse o problema. inclusive na propria documentação tem uma linha sobre isso
não entendi o que isso quer dizer.
ou seja, retorna undefined para atributos que ainda não foram setados. foi mais ou menos o que eu disse antes:
É tipo assim:
vamos pegar como exemplo o elemento (tag) (considere como elemento do DOM e não tag)
ela tem as suas propriedades conhecidas como:
text
innerHTML
nodeName
style
entre muitos e muitos outros!!!
mas ela (e todo o DOM) é flexível o bastante para aceitar novos atributos, com o nome e valor que vc quiser!!!
tipo, se eu quero que o elemento tenha um atributo chamado attrDoThiago e o valor dele ser o meu nome, eu posso fazer isso sem problemas não faria sentido fazer isso, mas é apenas um exemplo
mas eu teria que setar o atributo primeiro, tipo assim:
Loucura né! huahauha
e só ai eu poderia usá-lo, tipo assim:
se vc fizer o teste, vai ver que o valor é retornado e o alert() vai te mostrar meu nome “Thiago”
mas se eu não tivesse setado o atributo antes, vc veria que o alert() me retornaria undefined porque ele ainda não havia sido setado
o que estou querendo dizer é que se está aparecendo undefined para vc, é porque o atributo não foi setado ou vc está escrevendo o nome do atributo errado.
tenta digitar no google o nome do atributo + HTML + JS para ver se ele te corrige
certo. dei uma rateada “felomenal” aqui hehe. eu tava comparando a resultado de attr com uma string, imaginando que voltaria vazio quando nao tivesse atributo. obrigado.