J'ai une liste d'éléments que j'obtiens avec jQuery.
var $self = $(this); var $fields = $('.identifier-controls', $self);
4 Réponses :
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>
quelque chose comme: violon: http://jsfiddle.net/gcfzccc / p> p>
Les objets JQuery sont NON B> Tableaux. Ils sont comme des tableaux. La fonction trier code> 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 code> ; 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.
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); }); });
@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)
étapes pour trier les objets de jQuery "type de tableau" par attribut de données ...
html fort> p> sélecteur de jQuery ordinaire strong> p> Voir comment gettored () fonctionne. p> J'espère que cela aide! P> p>
Le poteau de blog est parti :-(