0
votes

Triez DIV par son attribut de données - Type d'erreur

essayer de trier les éléments div (indic> éléments par des valeurs d'attribut de données ( date de données code>);

Obtenir l'erreur de type - a.attr n'est pas une fonction .

P>

p>

<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>


6 commentaires

Les propriétés avec l'indice numérique dans l'objet JQuery sont des éléments DOM, pas des objets JQuery, utilisez getattribute 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 (...


@Teemu Si tout est String, alors comment trier par date?


Les valeurs semblent être des arguments valides pour date constructeur.


2016-12-04 05:04:14 devrait être remplacé par 2016-12-04t05: 04: 14 Je crois pour le constructeur de date


4 Réponses :


3
votes

Utilisez jQuery pour appeler .attr code>. Voici le code fixe.

p>

<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>


3 commentaires

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.



1
votes

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 Date code> Attribut via DataSet code> et triant le tableau en fonction des éléments DataSet.Data ​​CODE> Valeur :

p>

<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>


0 commentaires

2
votes

<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>


0 commentaires

0
votes

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 ()


0 commentaires