sorte de combinaison
-
21-08-2019 - |
Question
Je suis nouveau dans Jquery. Je veux utiliser sortableUI à mon datalist. Chaque ligne contient datalist texte avec le numéro de série. Je l'ai utilisé avec succès triables ui. Mais maintenant Je veux déplacer le texte non le numéro de série lors du tri. Voici mon exemple de code. Le div affiche le numéro de série au coin supérieur gauche de chaque li. Maintenant, si je tente de strat glisser pour 2ème exemple Li avec 3 li puis 3ème article va à la 2e position la règle mais le problème est qu'il va après div 2e point (où il devrait être avant div comme première charge). En conséquence, selon div de le style .. N ° de série 1 et 2 se chevauchent à la position de 1er élément.
Est-il possible que je pourrais utiliser pour garder la div juste après sa li correspondant lors du tri?
<ul id="ulSortable" class="ui-sortable" >
<li class="Decide_Rank_Item_Li">test A</li>
<div class="DisplayOrder">1</div>
<li class="Decide_Rank_Item_Li">Test B</li>
<div class="DisplayOrder">2</div>
<li class="Decide_Rank_Item_Li">Test C</li>
<div class="DisplayOrder">3</div>
<li class="Decide_Rank_Item_Li">Test D</li>
<div class="DisplayOrder">4</div>
</ul>
Image Avant de tri:
Maintenant, si je commence à bouger un peu, u peut voir le div ne contenant pas de série montre encore bon endroit
Après le tri 2ème élément à 3
<ul id="ulSortable" class="ui-sortable" >
<li class="Decide_Rank_Item_Li">test A</li>
<div class="DisplayOrder">1</div>
<div class="DisplayOrder">2</div>
<li class="Decide_Rank_Item_Li">Test C</li>
<li class="Decide_Rank_Item_Li">Test B</li>
<div class="DisplayOrder">3</div>
<li class="Decide_Rank_Item_Li">Test D</li>
<div class="DisplayOrder">4</div>
</ul>
Image après le tri:
Impossible de voir l'image
Le style de Li et Div sont présentés ici Style:
.Decide_Rank_Item_Li
{
position: relative;
display: block;
border-color: #C0C0C0;
border-width: 1px;
border-style: solid;
vertical-align: bottom;
width: 110px;
height: 100px;
float:left;
background-color: #F8F8F8;
}
.DisplayOrder
{
position: relative;
display: block;
float: left;
top: 5px;
left: -105px;
z-index: 100;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
padding: 0px;
margin: 0px;
width: 0px;
clear: right;
color: #808080;
}
La solution
Juste pensé à une solution de rechange qui est un peu plus élégant: http://jsbin.com/udina
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js"></script>
<style type="text/css" media="screen">
body { background-color: #000; font: 16px Helvetica, Arial; color: #fff; }
li {
width: 100px;
height: 100px;
float: left;
background: #F8F8F8;
border: 1px solid #C0C0C0;
list-style-position: inside;
color: #C0C0C0;
}
div {
text-align: center;
color: #C0C0C0;
font-size: 120%;
}
.placeholder {
list-style-type:decimal;
}
</style>
</head>
<body>
<ol>
<li><div>Test Content A</div></li>
<li><div>Test Content B</div></li>
<li><div>Test Content C</div></li>
<li><div>Test Content D</div></li>
<li><div>Test Content E</div></li>
<li><div>Test Content F</div></li>
<li><div>Test Content G</div></li>
<li><div>Test Content H</div></li>
<li><div>Test Content I</div></li>
<li><div>Test Content J</div></li>
<li><div>Test Content K</div></li>
<li><div>Test Content L</div></li>
<li><div>Test Content M</div></li>
<li><div>Test Content N</div></li>
<li><div>Test Content O</div></li>
<li><div>Test Content P</div></li>
<li><div>Test Content Q</div></li>
<li><div>Test Content R</div></li>
<li><div>Test Content S</div></li>
<li><div>Test Content T</div></li>
<li><div>Test Content U</div></li>
<li><div>Test Content V</div></li>
<li><div>Test Content W</div></li>
<li><div>Test Content X</div></li>
<li><div>Test Content Y</div></li>
<li><div>Test Content Z</div></li>
</ol>
<script>
$(function(){
$('ol').sortable({
helper: function(evt, el){
return el.clone().css('color', '#F8F8F8');
},
placeholder: 'placeholder'
});
});
</script>
</body>
</html>
Autres conseils
Je devais modifier le code HTML et CSS, mais je pense que cela permet d'obtenir l'effet que vous étiez après.
Voici une démo hébergé: http://jsbin.com/erigu (éditable via http://jsbin.com/erigu/edit )
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/themes/base/jquery-ui.css" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.1/jquery-ui.min.js"></script>
<style type="text/css" media="screen">
* { margin: 0; padding: 0; }
#numbers>div, #sortables>div {
width: 110px;
height: 100px;
float: left;
border: 1px solid #C0C0C0;
}
#numbers>div {
padding-bottom: 20px;
font: bold 12px Arial, Helvetica, sans-serif;
color: #808080;
background-color: #F8F8F8;
}
#sortables>div {
padding-top: 20px;
text-align: center;
color: black;
}
#sortables {
position: absolute;
left: 0px;
}
</style>
</head>
<body>
<div id="numbers">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
<div id="sortables">
<div>Test A</div>
<div>Test B</div>
<div>Test C</div>
<div>Test D</div>
</div>
<script>
$(function(){
$('#sortables').sortable({
/*
The helper option allows you to customize the dragged element.
in this case we are adding a background.
*/
helper: function(evt, el){
return el.clone().css({background:'#F8F8F8'});
}
});
});
</script>
</body>
</html>
peut-être plus simple de mettre les paires / li
à l'intérieur d'un autre div
élément, et de trier sur cette base.
Quelque chose comme cela devrait fonctionner, bien qu'il y ait beaucoup d'options sur la façon dont vous voulez le faire. La fonction triables ne nécessite pas que vous utilisez des éléments <=>.
<ul id="ulSortable" class="ui-sortable" >
<li class="Decide_Rank_Item_Li">
<span>test A</span>
<div class="DisplayOrder">1</div>
</li>
<li class="Decide_Rank_Item_Li">
<span>test B</span>
<div class="DisplayOrder">2</div>
</li>
<li class="Decide_Rank_Item_Li">
<span>test C</span>
<div class="DisplayOrder">3</div>
</li>
<li class="Decide_Rank_Item_Li">
<span>test D</span>
<div class="DisplayOrder">4</div>
</li>
</ul>