Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. KnockoutJS
  3. Sortable

Sortable

MITJavaScriptv1.3.0

A Knockout.js binding to connect observableArrays with jQuery UI sortable, draggable, and droppable functionality.

GitHubGitHub
545 stars128 forks0 contributors

What is Sortable?

knockout-sortable is a binding library for Knockout.js that integrates jQuery UI's sortable, draggable, and droppable functionality with Knockout's observableArrays. It allows developers to create drag-and-drop interfaces where user interactions automatically update the underlying data model, eliminating the need for manual DOM manipulation and ensuring UI-data synchronization.

Target Audience

Frontend developers using Knockout.js who need to implement interactive drag-and-drop features like sortable lists, connected lists, or draggable items within their applications.

Value Proposition

Developers choose knockout-sortable because it provides a declarative, Knockout-native way to handle drag-and-drop interactions, leveraging jQuery UI's robust widgets while automatically syncing with observableArrays. Its extensive configuration options and support for templates make it flexible for complex use cases.

Overview

A Knockout.js binding to connect observableArrays with jQuery UI sortable functionality

Use Cases

Best For

  • Creating sortable lists with automatic array reordering in Knockout.js applications
  • Building connected drag-and-drop interfaces between multiple lists
  • Implementing draggable items that can be dropped into sortable collections
  • Developing interactive seating charts or similar configurable layouts
  • Adding touch-enabled drag-and-drop support with jQuery UI Touch Punch
  • Handling complex drag-and-drop logic with before/after move callbacks

Not Ideal For

  • Projects using modern frameworks like React or Vue that have built-in drag-and-drop solutions
  • Applications prioritizing minimal bundle size, as it requires the hefty jQuery and jQuery UI libraries
  • Teams needing complex or containerless template structures due to the single-container element restriction
  • Environments requiring server-side rendering or static generation, since it's purely client-side and depends on DOM manipulation

Pros & Cons

Pros

Automatic Data Sync

Drag-and-drop actions automatically update Knockout observableArrays, keeping UI and data in sync without manual DOM updates, as demonstrated in the basic usage examples.

Flexible Configuration

Offers extensive options like beforeMove and afterMove callbacks, and dynamic enabling with isEnabled, allowing fine-grained control over drag-and-drop behavior.

Comprehensive Bindings

Includes sortable, draggable, and droppable bindings, providing a complete suite for various interactive scenarios beyond simple sorting.

Template Support

Works with both anonymous and named Knockout templates, enhancing adaptability, though with the limitation of requiring a single container element.

Cons

Bulky Dependencies

Requires jQuery and jQuery UI, which are large legacy libraries, and touch support needs an additional plugin like Touch Punch, increasing bundle size and complexity.

Template Limitations

Templates must have a single top-level element and avoid surrounding text nodes, restricting markup flexibility and complicating certain designs, as warned in the README.

Legacy Technology Stack

Built on the older Knockout.js and jQuery UI, which may not align with modern frontend practices and could have reduced community support and compatibility.

Frequently Asked Questions

Quick Stats

Stars545
Forks128
Contributors0
Open Issues49
Last commit4 months ago
CreatedSince 2012

Tags

#ui-binding#sortable-lists#frontend#javascript-library#data-binding#interactive-ui#drag-and-drop#jquery-ui#knockout-js

Built With

K
Knockout.js
G
Grunt
j
jQuery
j
jQuery UI

Included in

KnockoutJS104
Auto-fetched 1 day ago

Related Projects

ValidationValidation

A validation library for Knockout JS

Stars1,015
Forks367
Last commit3 years ago
MappingMapping

Object mapping plugin for KnockoutJS

Stars544
Forks756
Last commit9 years ago
PostboxPostbox

A small library that uses Knockout's native pub/sub capabilities to facilitate decoupled communication between separate view models or components.

Stars347
Forks54
Last commit3 years ago
GridGrid

A Knockout DataGrid

Stars278
Forks124
Last commit5 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub