Estou criando uma página que possui alguma interação fornecida por javascript. Apenas como exemplo: links que enviam uma solicitação AJAX para obter o conteúdo dos artigos e, em seguida, exibem esses dados em uma div. Obviamente, neste exemplo, preciso de cada link para armazenar um pouco mais de informação: a identificação do artigo. A maneira como eu tenho lidado com isso no caso foi colocar essas informações no link href:
<a class="article" href="#5">
Em seguida, uso o jQuery para encontrar os elementos a.article e anexar o manipulador de eventos apropriado. (não fique muito preocupado com a usabilidade ou semântica aqui, é apenas um exemplo)
De qualquer forma, esse método funciona, mas cheira um pouco e não é extensível (o que acontece se a função click tiver mais de um parâmetro? E se alguns desses parâmetros forem opcionais?)
A resposta imediatamente óbvia foi usar atributos no elemento. Quero dizer, é para isso que servem, certo? (Mais ou menos).
<a articleid="5" href="link/for/non-js-users.html">
Na minha pergunta recente , perguntei se esse método era válido, e acontece que, além de definir meu próprio DTD (não), não, não é válido ou confiável. Uma resposta comum foi colocar os dados no class
atributo (embora isso possa ter acontecido por causa do meu exemplo mal escolhido), mas para mim isso cheira ainda mais. Sim, é tecnicamente válido, mas não é uma ótima solução.
Outro método que eu usei no passado foi realmente gerar JS e inseri-lo na página em uma <script>
tag, criando uma estrutura que se associaria ao objeto.
var myData = {
link0 : {
articleId : 5,
target : '#showMessage'
// etc...
},
link1 : {
articleId : 13
}
};
<a href="..." id="link0">
Mas isso pode ser uma verdadeira dor de cabeça para manter e geralmente é apenas muito confuso.
Então, para chegar à pergunta, como você armazena informações arbitrárias para tags HTML ?