J'ai pensé poster une réponse complémentaire à celle de @KyorCode. J'ai suivi son conseil et j'ai opté pour JQuery Sortable et ça a marché sans problème pour moi. Il m'a fallu environ 10 minutes pour le faire fonctionner.
Je n'ai pas eu à inclure de CSS JQuery UI - seulement le JavaScript - et je n'ai donc pas eu de problème de conflit entre le CSS et Bootstrap.
Exemple de travail :
Voici un exemple de travail sur www.bootply.com.
HTML :
<!-- Bootstrap 3 panel list. -->
<ul id="draggablePanelList" class="list-unstyled">
<li class="panel panel-info">
<div class="panel-heading">You can drag this panel.</div>
<div class="panel-body">Content ...</div>
</li>
<li class="panel panel-info">
<div class="panel-heading">You can drag this panel too.</div>
<div class="panel-body">Content ...</div>
</li>
</ul>
JavaScript :
Vous pouvez télécharger JQuery Sortable sans inclure l'ensemble de JQuery UI dans votre page.
<!-- Assumes that JQuery is already included somewhere. Size: 22kb or 13kb minified. -->
<script src="/Scripts/jquery-ui-1.10.4.custom.js"></script>
<script type="text/javascript">
jQuery(function($) {
var panelList = $('#draggablePanelList');
panelList.sortable({
// Only make the .panel-heading child elements support dragging.
// Omit this to make the entire <li>...</li> draggable.
handle: '.panel-heading',
update: function() {
$('.panel', panelList).each(function(index, elem) {
var $listItem = $(elem),
newIndex = $listItem.index();
// Persist the new indices.
});
}
});
});
</script>
CSS :
<style type="text/css">
/* show the move cursor as the user moves the mouse over the panel header.*/
#draggablePanelList .panel-heading {
cursor: move;
}
</style>
HTH