You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
3.0 KiB

11 years ago
# Sortable
## Features
* Support touch devices and [modern](http://caniuse.com/#search=drag) browsers
11 years ago
* Built using native HTML5 drag and drop API
* Simple API
* Lightweight, 2KB gzipped
* No jQuery
### Usage
```html
<ul id="items">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
```
```js
10 years ago
var el = document.getElementById('items');
new Sortable(el);
11 years ago
```
10 years ago
---
11 years ago
### Options
```js
10 years ago
new Sortable(el, {
11 years ago
group: "name",
store: null, // @see Store
11 years ago
handle: ".my-handle", // Restricts sort start click/touch to the specified element
draggable: ".item", // Specifies which items inside the element should be sortable
ghostClass: "sortable-ghost",
11 years ago
onStart: function (/**Event*/evt) { // dragging
var itemEl = evt.item;
},
onEnd: function (/**Event*/evt) { // dragging
var itemEl = evt.item;
},
11 years ago
11 years ago
onAdd: function (/**Event*/evt){
var itemEl = evt.item;
11 years ago
},
11 years ago
onUpdate: function (/**Event*/evt){
var itemEl = evt.item; // the current dragged HTMLElement
11 years ago
},
11 years ago
onRemove: function (/**Event*/evt){
var itemEl = evt.item;
11 years ago
}
});
```
11 years ago
10 years ago
---
11 years ago
### Method
##### toArray():`String[]`
Serializes the sortable's item data-id's into an array of string.
10 years ago
##### sort(order:`String[]`)
Sorts the elements according to the array.
```js
10 years ago
var order = sortable.toArray();
sortable.sort(order.reverse()); // apply
```
##### destroy()
---
### Store
Saving and restoring of the sort.
```js
new Sortable(el, {
group: "localStorage-example",
store: {
10 years ago
/**
* Get the order of elements. Called once during initialization.
* @param {Sortable} sortable
* @retruns {Array}
*/
get: function (sortable) {
var order = localStorage.getItem(sortable.options.group);
return order ? order.split('|') : [];
},
10 years ago
/**
* Save the order of elements. Called every time at the drag end.
* @param {Sortable} sortable
*/
set: function (sortable) {
var order = sortable.toArray();
localStorage.setItem(sortable.options.group, order.join('|'));
}
}
})
```
11 years ago
---
### Sortable.utils
* on(el`:HTMLElement`, event`:String`, fn`:Function`) — attach an event handler function
* off(el`:HTMLElement`, event`:String`, fn`:Function`) — remove an event handler
* css(el`:HTMLElement`)`:Object` — get the values of all the CSS properties
* css(el`:HTMLElement`, prop`:String`)`:Mixed` — get the value of style properties
* css(el`:HTMLElement`, prop`:String`, value`:String`) — set one CSS properties
* css(el`:HTMLElement`, props`:Object`) — set more CSS properties
* find(ctx`:HTMLElement`, tagName`:String`[, iterator`:Function`])`:Array` — get elements by tag name
* bind(ctx`:Mixed`, fn`:Function`)`:Function` — Takes a function and returns a new one that will always have a particular context
* closest(el`:HTMLElement`, selector`:String`[, ctx`:HTMLElement`])`:HTMLElement|Null` — for each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree
* toggleClass(el`:HTMLElement`, name`:String`, state`:Boolean`) — add or remove one classes from each element