Changer les valeurs d'attribut personnalisées

J'ai un certain code où j'ai ajouté des attributs personnalisés dont je veux modifier la valeur.

<div myCustomElement="someValue"></div> 

Voici ce que j'essaie:

 $("#somebutton").click(function() { $('myCustomElement').val('SomeNewValue'); }); 

Mais rien n'est changé. Comment puis-je que cela fonctionne?

Tout d'abord, inventer vos propres attributs signifie que votre HTML est invalide et peut entraîner des problèmes dans votre page. Deuxièmement, val() est utilisé pour modifier directement la propriété de value de l'élément, donc pourquoi il n'a aucun effet dans votre exemple.

Pour atteindre ce dont vous avez besoin, utilisez data-* attributs data-* , car ils sont destinés à cet effet:

 <div data-custom="someValue"></div> 
 $("#somebutton").click(function() { // getter: var foo = $('div').data('custom'); // = 'someValue' // setter: $('div').data('custom', 'someOtherValue'); }); 

Notez que les data() maintiennent un objet en mémoire, de sorte que les modifications que vous introduisez ne seront pas visibles dans le DOM.

Pour plus d'informations: http://api.jquery.com/data

Votre élément n'est pas personnalisé, c'est toujours une division.

Vous pouvez ainsi créer un élément personnalisé.

 <myCustomElement></myCustomElement> 

Ensuite, sélectionnez comme

 $('myCustomElement')... 

Une alternative est d'utiliser les attributs de données.

 <div data-myCustomData="test"></div> 

Ensuite, sélectionnez comme si

 var data = $('div').data('myCustomData')//data = 'test'