2 votes

Comment afficher une classe de div spécifique lors d'une commande

J'obtiens des données en utilisant une boucle vers des DIVs HTML. Il peut y avoir beaucoup plus de données. Il y a deux classes pour les DIVs ( test one y test two ) Comment afficher d'abord toutes les données du "test 1", puis celles du "test 2" ? javascript ou Jquery ?

Mon violon .

HTML

<div class="container">
   <div class="test one">1</div>
   <div class="test one">1</div>
   <div class="test two">2</div>
   <div class="test one">1</div>
   <div class="test two">2</div>
   <div class="test one">1</div>
   <div class="test two">2</div>
   <div class="test two">2</div>
</div>

5voto

sol Points 15056

Cela peut être réalisé en utilisant le order de flexbox :

.container {
  display: flex;
  flex-direction: column;
}

.test.two {
  order: 2;
}

<div class="container">
  <div class="test one">1</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test two">2</div>
</div>

2voto

Mohammed Acharki Points 174

En utilisant la bibliothèque jQuery, cela peut être fait en clonant le conteneur, puis en bouclant à travers l'instance clonée et en obtenant l'attribut .one d'abord, puis l'élément .two et les ajouter au conteneur d'origine après l'avoir vidé à l'aide de la fonction $('.container').html(''); Vérifiez l'extrait de travail ci-dessous.

J'espère que cela vous aidera.

var container = $('.container').clone();

$('.container').html('');

container.find('.one').each(function() {
  $('.container').append($(this)[0].outerHTML);
})

container.find('.two').each(function() {
  $('.container').append($(this)[0].outerHTML);
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="container">
  <div class="test one">1</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test two">2</div>
</div>

2voto

Ankit Points 75
    jQuery(document).ready(function($) {
      var items = $('.container .test').get();
      console.log(items);
      items.sort(function(a,b){
          var keyA = $(a).text();
          var keyB = $(b).text();

          if (keyA < keyB) return -1;
          if (keyA > keyB) return 1;
          return 0;
      });
      var container = $('.container');
      $.each(items, function(i, div){
          container.append(div);
      });
    });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
    <div class="test one">1</div>
    <div class="test one">1</div>
    <div class="test two">2</div>
    <div class="test one">1</div>
    <div class="test two">2</div>
    <div class="test one">1</div>
    <div class="test two">2</div>
    <div class="test two">2</div>
  </div>

1voto

Kevin Kloet Points 970

Vous pouvez utiliser un simple Array.prototype.sort() sur un tableau qui contient les éléments et remplacer le innerhtml de l'élément .container élément.

var elements = $('.container').children();
elements.sort(function(a,b){
    return a.className > b.className;
});
$('.container').html(elements);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
  <div class="test one">1</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test one">1</div>
  <div class="test two">2</div>
  <div class="test two">2</div>
</div>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X