JSFiddle - React, Tailwind, and code Playground

by mvirik

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<ul id="sortable">
  <li class="ui-state-default">X</li>
  <li class="ui-state-default">2</li>
  <li class="ui-state-default pinned">X</li>
  <li class="ui-state-default">4</li>
  <li class="ui-state-default">5</li>
  <li class="ui-state-default">6</li>
  <li class="ui-state-default pinned">X</li>
  <li class="ui-state-default">8</li>
  <li class="ui-state-default">9</li>
  <li class="ui-state-default">10</li>
  <li class="ui-state-default">11</li>
  <li class="ui-state-default">X</li>
</ul>

CSS

#sortable { 
list-style-type: none; 
margin: 0; 
padding: 0; 
width: 450px; 
}
#sortable li { 
margin: 3px 3px 3px 0; 
padding: 1px; 
float: left; 
width: 100px; 
height: 90px; 
font-size: 4em; 
text-align: center; 
}
#sortable li.pinned {
  background: red;
}

JavaScript

$(function() {
	$("#sortable").sortable({
		start: function () {
			$(this).find(".pinned").each(function () {
				$(this).data("fixedIndex", $(this).index());
			});
		},        
		change: function () {
			$(this).find(".pinned").each(function () {
				$(this).detach().insertAfter($("#sortable li:eq(" + ($(this).data("fixedIndex")-1) + ")"));
			});
		}
	});
});