Como definir um atributo de dados sem adicionar um valor no jQuery? Eu quero isso:
<body data-body>
Eu tentei:
$('body').attr('data-body'); // this is a getter, not working
$('body').attr('data-body', null); // not adding anything
Tudo o resto parece adicionar os segundos argumentos como uma string. É possível apenas definir um atributo sem valor?
javascript
jquery
attributes
attr
David Hellsing
fonte
fonte
data-body
vs.data-body=""
?required
atributo para validação de formulário HTML5. Tenho certeza de que existem muitos outros casos de uso válidos.Respostas:
A
attr()
função também é uma função setter. Você pode simplesmente passar uma string vazia.Uma string vazia simplesmente criará o atributo sem valor.
fonte
null
não é algo surpreendente.$(el).prop('data-body', true)
funcionou para mim, onde$(el).attr('data-body', '')
acabou configurando data-body = "data-body" para mim.$(el).prop('data-body', true)
não funciona para mim.attr()
funciona, mas também adiciona uma cadeia vazia como valor do atributo que quero adicionar.Talvez tente:
fonte
var btn = $(this).get(0); btn.setAttribute("disabled","");
A resposta aceita não cria mais um atributo somente nome (a partir de setembro de 2017).
Você deve usar o método JQuery prop () para criar atributos somente de nome.
fonte
Você pode fazer isso sem o jQuery!
Exemplo:
fonte
Não tenho certeza se isso é realmente benéfico ou por que eu prefiro esse estilo, mas o que faço (em vanilla js) é:
Isso adicionará o atributo em minúsculas sem um valor ou o removerá se ele já existir no elemento.
https://developer.mozilla.org/en-US/docs/Web/API/Element/toggleAttribute
fonte