knockout-sortable - simple list
https://github.com/rniemeyer/knockout-sortable
by unklefolk
HTML
<script src="https://github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.debug.js"></script>
<script src="https://github.com/downloads/rniemeyer/knockout-sortable/knockout-sortable.js"></script>
<div id="main">
<h3>Tasks</h3>
<div class="container" data-bind="sortable: {data: tasks1, connectClass: 'iDontExistClass'}">
<div class="item">
<span data-bind="text: name"/>
</div>
</div>
<div class="container" data-bind="sortable: {data: tasks2, connectClass: 'iDontExistClass'}">
<div class="item">
<span data-bind="text: name"/>
</div>
</div>
</div>
CSS
body {
font-family: arial;
}
h3 {
text-align: center;
font-weight: bold;
}
div {
padding: 5px;
margin: 5px;
border: black 1px solid;
}
p, a {
font-size: .8em;
}
ul {
padding-bottom: 10px;
}
.ko_container {
width: 125px;
min-height: 50px;
background-color: #AAA;
}
.high {
background-color: red;
}
.trash {
background-color: #000;
}
.item {
background-color: #DDD;
cursor: move;
text-align: center;
}
.item input {
width: 100px;
}
#main {
float: left;
width: 150px;
margin-top: 0px;
}
#results {
margin-left: 175px;
width: 150px;
}
JavaScript
var Task = function(name) {
this.name = ko.observable(name);
}
var ViewModel = function() {
var self = this;
self.tasks1 = ko.observableArray([
new Task("Get dog food"),
new Task("Mow lawn"),
new Task("Fix car"),
new Task("Fix fence"),
new Task("Walk dog"),
new Task("Read book")
]);
self.tasks2 = ko.observableArray([
new Task("xGet dog food"),
new Task("xMow lawn"),
new Task("xFix car"),
new Task("xFix fence"),
new Task("xWalk dog"),
new Task("xRead book")
]);
};
ko.applyBindings(new ViewModel());