Eu tenho uma div com um atributo data-myval = "10"
. Eu quero atualizar seu valor; não mudaria se eu usasse div.data('myval',20)
? Preciso usar div.attr('data-myval','20')
apenas?
Estou ficando confuso entre HTML5 e jQuery? Por favor informar. Obrigado!
EDIT: atualizado div.data('myval')=20
para div.data('myval',20)
, mas o HTML ainda não está sendo atualizado.
jquery
html
custom-data-attribute
Pulkit Mittal
fonte
fonte
div
? Um objeto ou elemento jQuery?div.data('myval')=20
não funcionaria para armazenar um valor apenas porque a sintaxe está incorreta - veja as respostas para a sintaxe correta. Mas observe que.data()
, na verdade, não atualiza o atributo do elemento , ele armazena os dados em outro local.Respostas:
HTML
JS
Demo
Referência
A partir da referência:
Note-se que o jQuery
data()
não altera odata
atributo em HTML.Portanto, se você precisar alterar o
data
atributo em HTML, use-o.attr()
.HTML
JS:
Veja esta demonstração
fonte
data()
deget
eset
HTML-5 atributos de dados.[data-myval="10"]{ color: red; }
, ela estilizaria a tag de acordo com o valor do atributo de dados.Você também pode usar o seguinte
attr
;HTML
Roteiro
OU
fonte
Observe que o jQuery
.data()
não é atualizado quando você altera osdata-
atributos html5 com javascript.Se você usa o jQuery
.data()
para definirdata-
atributos nos elementos HTML, é melhor usar o jQuery.data()
para lê-los. Caso contrário, poderá haver inconsistências se você atualizar os atributos dinamicamente. Por exemplo, vejasetAttribute()
,dataset()
,attr()
abaixo. Altere o valor, pressione o botão várias vezes e consulte o console.Mostrar snippet de código
fonte
Solução Javascript Vanilla
HTML
JavaScript:
Usando a
getAttribute()
propriedade do DOMUsando a
dataset
propriedade JavaScriptfonte
Se você estiver usando jQuery, use
.data()
:Você pode armazenar dados arbitrários com
.data()
, mas está restrito a apenas seqüências de caracteres ao usá-lo.attr()
.fonte
.data()
método não atualizadata-
atributos - ou seja, os dados que ele armazena não terminam em um atributo (é por isso que ele pode armazenar valores que não são de cadeia), mesmo que ele possa recuperar o valor de umdata-
atributo. Embora eu suspeite que o OP realmente não precise definir atributos, mesmo que seja o que a pergunta foi feita..attr()
para recuperar o atributo). Eu apenas pensei que valeria a pena mencionar, uma vez que o OP perguntou explicitamente (se não por engano) sobre a atualização de atributos..attr()
você não esteja realmente atualizando "o html", está atualizando o DOM. Quando você solicita que o navegador forneça o "html" (por.html()
ou pelo DOMelement.innerHTML
), o navegador efetivamente o regenera para você com base no estado do DOM no momento. Tipo de.[jQuery] .data () vs .attr () vs .extend ()
O método jQuery
.data()
atualiza um objeto interno gerenciado pelo jQuery através do uso do método, se eu estiver correto.Se você deseja atualizar o seu
data-attributes
com alguma propagação, use -- caso contrário,
$('body').attr('data-test', 'text');
funcionará bem.Outra maneira de conseguir isso é usando -
- que restringe qualquer alteração de atributo para
HTMLElement.prototype.dataset
, e não qualquer adicionalHTMLElement.prototype.attributes
.fonte
Outra maneira de definir o atributo de dados é usar a propriedade do conjunto de dados .
fonte
Para manter o jQuery e o DOM sincronizados, uma opção simples pode ser
fonte