web-dev-qa-db-fra.com

Définir l'attribut sans valeur

Comment définir un attribut de données sans ajouter de valeur dans jQuery? Je veux ceci:

<body data-body>

J'ai essayé:

$('body').attr('data-body'); // this is a getter, not working
$('body').attr('data-body', null); // not adding anything

Tout le reste semble ajouter le deuxième argument sous forme de chaîne. Est-il possible de définir un attribut sans valeur?

181
David Hellsing

La fonction attr() est également une fonction de réglage. Vous pouvez simplement lui passer une chaîne vide.

$('body').attr('data-body','');

Une chaîne vide créera simplement l'attribut sans valeur.

<body data-body>

Référence - http://api.jquery.com/attr/#attr-attributeName-value

attr (nomAttribut, valeur)

234
Lix

Peut-être essayer:

var body = document.getElementsByTagName('body')[0];
body.setAttribute("data-body","");
41
Callum McLean

La réponse acceptée ne crée plus un attribut nominatif (à partir de septembre 2017).

Vous devez utiliser la méthode JQuery prop () pour créer des attributs nommés uniquement.

$(body).prop('data-body', true)
22
Charlie H

Vous pouvez le faire sans jQuery!

Exemple:

document.querySelector('button').setAttribute('disabled', '');
<button>My disabled button!</button>

Pour définir la valeur d'un attribut booléen, telle que désactivée, vous pouvez spécifier n'importe quelle valeur. Une chaîne vide ou le nom de l'attribut sont des valeurs recommandées. Tout ce qui compte, c'est que si l'attribut est présent, quelle que soit sa valeur réelle, sa valeur est considérée comme vraie. L'absence de l'attribut signifie que sa valeur est false. En définissant la valeur de l'attribut disabled sur la chaîne vide (""), nous définissons disabled sur true, ce qui entraîne la désactivation du bouton.

De MDN Element.setAttribute ()

3
LipESprY