Je veux placer le .move
est à l'intérieur de .destination
cuando .gridview
est cliqué ailleurs dans la fenêtre .item
si .listview
est cliqué.
Actuellement, lorsque l'on clique sur l'une des deux vues, la .move
div est itéré plusieurs fois. Comment puis-je modifier le code pour que la .move
est ajouté une fois pour chaque .item
?
$(".gridview").on("click", function() {
$(".item").each(function() {
var $this = $(this);
$this.find(".move").appendTo(".destination");
});
var $this = $(this).closest(".container");
$this.find(".listview").removeClass("active");
$this.find(".gridview").addClass("active");
$this.find(".block").css("display", "flex");
});
$(".listview").on("click", function() {
$(".item").each(function() {
var $this = $(this);
var $list = $this.closest(".list");
$this.find(".move").appendTo(".item");
});
var $this = $(this).closest(".container");
$this.find(".gridview").removeClass("active");
$this.find(".listview").addClass("active");
});
.item {
margin: 1.3rem 0;
border: 2px solid;
}
.destination {
height: 35px;
border: 3px solid
}
.move {
height: 25px;
border: 2px solid;
background: green
}
.block {
display: none;
height: 45px;
width: 45px;
border: 2px solid green;
}
.active {
background: blue;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
<div class="gridview">Grid</div>
<div class="listview active">List</div>
<div class="list">
<div class="item">
<div class="destination"></div>
<div class="block"></div>
<div class="move"></div>
</div>
<div class="item">
<div class="destination"></div>
<div class="block"></div>
<div class="move"></div>
</div>
</div>
</div>