9
votes

Liste de tri des éléments en jQuery

J'ai une liste d'éléments que j'obtiens avec jQuery.

var $self = $(this);
var $fields = $('.identifier-controls', $self);


0 commentaires

4 Réponses :


2
votes

Une sorte d'insertion serait une manière assez simple de le faire.

ou être un peu subversive, vous pouvez profiter du moteur JavaScript pour ceci: P>

<div data-order="30">30</div>
<div data-order="40">40</div>
<div data-order="10">10</div>
<div data-order="20">20</div>
<div data-order="1">1</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>


0 commentaires

4
votes

quelque chose comme: xxx

violon: http://jsfiddle.net/gcfzccc /


2 commentaires

Les objets JQuery sont NON Tableaux. Ils sont comme des tableaux. La fonction trier des objets JQuery est sans papiers et, si vous regardez le fichier jQuery.js, ils disent que c'est pour un usage interne uniquement. Donc, une mise en garde est en ordre. Cela dit, si vous êtes sûr que JQuery ne vous soit pas gâché si vous gâchez l'ordre de ses éléments (je ne peux pas) appliquer manuellement array.pototype.sort ; La spécification est tout à fait claire que vous devriez pouvoir l'utiliser sur des matrices objets non-réseau. L'esprit vous, une fois que vous l'avez triplé, ils montrent toujours au même endroit dans le DOM.


@ T.J.Crowder DÉCISION DE CONCEPTION DE MAUVAISE À PARTIE DE JQUERY DEVS POUR APPELER IT TRY ET FAIRE UN RÉSULTAT DE SÉLECTEUR SIMPORTANT. De nombreux codeurs JS en tapant au canard tomberaient dans ce piège.



8
votes

Essayez ceci:

$(function(){
   var $self = $(this);
   var sortedList = $('.identifier-controls', $self).sort(function(lhs, rhs){
      return parseInt($(lhs).attr("data-order"),10) - parseInt($(rhs).attr("data-order"),10);
   });
});


2 commentaires

@Thesheekekggeek: Voir ma note sur l'une des autres réponses, tant que vous savez que vous comptez sur un comportement non documenté capable de changer à tout moment et que vous êtes en train de vous brouiller avec l'ordre des éléments stockés de JQuery, qui est ALLER DES EFFETS CONTRÔLER AUQUELLEMENT DES MÉTHODES JQUERY GARANTIE Les choses seront effectuées dans un ordre spécifique. (Je ne vois pas non plus comment cela déplace les choses dans le DOM; était-ce pas une exigence?)


Il y a du code dans une autre partie du contrôle qui gère les ajoutant au DOM. Ce que le contrôle fait réellement est un tas de textes de texte et des étiquettes qui existent déjà (juste une liste des éléments LI) et les voler, les ajoutant à la DOM pour effectuer un contrôle qui ressemble à une liste déroulante avec toutes les boîtes de texte. La joie des exigences. (C'est en fait pas si mal)



9
votes

étapes pour trier les objets de jQuery "type de tableau" par attribut de données ...

  1. Sélectionnez tous les objets via JQuery Sélector
  2. convertir en une matrice réelle (pas d'objet de jQuy semblable à un tableau)
  3. Trier la matrice d'objets
  4. reconvertir à l'objet JQuery avec le tableau des objets DOM

    html xxx

    sélecteur de jQuery ordinaire xxx xxx

    permet de trier ceci par la commande de données xxx xxx pré> Xxx

    Voir comment gettored () fonctionne.

    J'espère que cela aide!


1 commentaires

Le poteau de blog est parti :-(