essayer de trier les éléments Obtenir l'erreur de type - p> div (indic> éléments par des valeurs d'attribut de données ( date de données code>); a.attr n'est pas une fonction .<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='titles'>
<div class='title' data-date="2017-11-05 07:29:35">lorem</div>
<div class='title' data-date="2017-09-22 05:27:31">ipsum</div>
<div class='title' data-date="2014-07-29 08:29:03">lorema</div>
<div class='title' data-date="2016-12-04 05:04:14">ipsuma</div>
</div>
<button>CLICK</button>
4 Réponses :
Utilisez jQuery pour appeler p> .attr code>.
Voici le code fixe. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='titles'>
<div class='title' data-date="2017-11-05 07:29:35">lorem</div>
<div class='title' data-date="2017-09-22 05:27:31">ipsum</div>
<div class='title' data-date="2014-07-29 08:29:03">lorema</div>
<div class='title' data-date="2016-12-04 05:04:14">ipsuma</div>
</div>
<button>CLICK</button>
C'est affreux, quel est le point de convertir l'élément DOM en un objet JQuery, puis appelez une méthode JQuery qui convertira l'objet retour à DOM Element et lisez le même attribut.
@Teemu Vous avez raison, j'ai mentionné cela sur les commentaires des questions avant de donner ma réponse, mais comme il s'agissait d'un problème de JQuery, je lui ai répondu à résoudre le problème que l'utilisateur avait, dans ce cas, d'utiliser .attr < / code>
@Teemu, votre commentaire sur la double conversion est utile. Merci.
ci-dessous est une solution de vanille JavaScript à votre problème. Les étapes simples incluent l'interrogation de la DOM pour les éléments souhaités, accédant à sa date p> Date code> Attribut via DataSet code> et triant le tableau en fonction des éléments DataSet.Data CODE> Valeur : <div id='titles'>
<div class='title' data-date="2017-11-05 07:29:35">lorem</div>
<div class='title' data-date="2017-09-22 05:27:31">ipsum</div>
<div class='title' data-date="2014-07-29 08:29:03">lorema</div>
<div class='title' data-date="2016-12-04 05:04:14">ipsuma</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id='titles'> <div class='title' data-date="2017-11-05 07:29:35">lorem</div> <div class='title' data-date="2017-09-22 05:27:31">ipsum</div> <div class='title' data-date="2014-07-29 08:29:03">lorema</div> <div class='title' data-date="2016-12-04 05:04:14">ipsuma</div> </div> <button>SORT BY STRING</button> <button>SORT BY DATE</button>
attr () est une méthode de jQuery et pour pouvoir l'utiliser sur un élément HTML que vous devez utiliser $. Ainsi, au lieu d'A.ATTR (), écrivez-le comme $ (a) .attr () p>
Les propriétés avec l'indice numérique dans l'objet JQuery sont des éléments DOM, pas des objets JQuery, utilisez
getattribute code> et remarquez, que tout ce que vous obtenez de la DOM, est une chaîne.Pour utiliser directement .att vous devez utiliser jQuery, utilisez GetatTtribute pour l'utiliser avec pure JS
Essayez d'envelopper les variables A et B avec
$ (a) .attr (... code>@Teemu Si tout est String, alors comment trier par date?
Les valeurs semblent être des arguments valides pour
date code> constructeur.2016-12-04 05:04:14 Code> devrait être remplacé par2016-12-04t05: 04: 14 Code> Je crois pour le constructeur de date