@@ -79,7 +79,7 @@ <h1>jQuery Sortable</h1>
7979 Download
8080 < a href ='js/jquery-sortable-min.js '> minified</ a >
8181 version
82- (7.7 kb)
82+ (8.3 kb)
8383 </ small >
8484 </ p >
8585 </ div >
@@ -543,14 +543,21 @@ <h2>Connected lists with limited drop targets</h2>
543543< div class ='row '>
544544 < div class ="span12 example ">
545545 < div class ="CodeRay ">
546- < div class ="code "> < pre > < span class ="predefined "> $</ span > (< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> ol.limited_drop_targets</ span > < span class ="delimiter "> "</ span > </ span > ).sortable({
546+ < div class ="code "> < pre > < span class ="keyword " > var </ span > group = < span class =" predefined "> $</ span > (< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> ol.limited_drop_targets</ span > < span class ="delimiter "> "</ span > </ span > ).sortable({
547547 < span class ="key "> group</ span > : < span class ="string "> < span class ="delimiter "> '</ span > < span class ="content "> limited_drop_targets</ span > < span class ="delimiter "> '</ span > </ span > ,
548548 < span class ="function "> isValidTarget</ span > : < span class ="keyword "> function</ span > (item, container) {
549549 < span class ="keyword "> if</ span > (item.is(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> .highlight</ span > < span class ="delimiter "> "</ span > </ span > ))
550550 < span class ="keyword "> return</ span > < span class ="predefined-constant "> true</ span >
551551 < span class ="keyword "> else</ span > {
552552 < span class ="keyword "> return</ span > item.parent(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> ol</ span > < span class ="delimiter "> "</ span > </ span > )[< span class ="integer "> 0</ span > ] == container.el[< span class ="integer "> 0</ span > ]
553553 }
554+ },
555+ < span class ="function "> onDrop</ span > : < span class ="keyword "> function</ span > (item, container, _super) {
556+ < span class ="predefined "> $</ span > (< span class ="string "> < span class ="delimiter "> '</ span > < span class ="content "> #serialize_output</ span > < span class ="delimiter "> '</ span > </ span > ).text(group.sortable(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> serialize</ span > < span class ="delimiter "> "</ span > </ span > ).get().join(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="char "> \n</ span > < span class ="delimiter "> "</ span > </ span > ))
557+ _super(item, container)
558+ },
559+ < span class ="function "> serialize</ span > : < span class ="keyword "> function</ span > (parent, children, isContainer) {
560+ < span class ="keyword "> return</ span > isContainer ? children.join() : parent.text()
554561 }
555562})</ pre > </ div >
556563</ div >
@@ -562,8 +569,15 @@ <h2>Connected lists with limited drop targets</h2>
562569 < strong > Limit the drop targets</ strong >
563570 of the dragged item
564571 </ li >
572+ < li >
573+ Customize
574+ < strong > serialization</ strong >
575+ of the lists
576+ </ li >
565577 </ ul >
566578 < p > < div class ="btn btn-primary show-code " data-toggle ="button "> < i class ="icon-chevron-down "> </ i > show me the code</ div > </ p >
579+ < h3 > Serialize result</ h3 >
580+ < pre id ='serialize_output '> </ pre >
567581 </ div >
568582 < div class ='span4 '>
569583 < ol class ='limited_drop_targets vertical '>
@@ -885,6 +899,16 @@ <h3>
885899 < code > .sortable("disable")</ code >
886900 </ h3 >
887901 < p > Disable all instantiated sortables in the set of matched elements</ p >
902+ < h3 >
903+ < code > .sortable("serialize")</ code >
904+ </ h3 >
905+ < p >
906+ Serialize all selected containers. Returns a
907+ < code > jQuery</ code >
908+ object . Use
909+ < code > .get()</ code >
910+ to retrieve the array, if needed.
911+ </ p >
888912 </ div >
889913 </ div >
890914 < h2 id ='group-options '> Group options</ h2 >
@@ -902,7 +926,7 @@ <h2 id='group-options'>Group options</h2>
902926</ td >
903927< td >
904928 < div class ="CodeRay ">
905- < div class ="code "> < pre > < span class ="keyword "> function</ span > (placeholder, container) {
929+ < div class ="code "> < pre > < span class ="keyword "> function</ span > (< span class =" predefined " > $ placeholder</ span > , container) {
906930}</ pre > </ div >
907931</ div >
908932
@@ -943,20 +967,31 @@ <h2 id='group-options'>Group options</h2>
943967</ td >
944968< td >
945969 < div class ="CodeRay ">
946- < div class ="code "> < pre > < span class ="keyword "> function</ span > (item, container) {
970+ < div class ="code "> < pre > < span class ="keyword "> function</ span > (< span class =" predefined " > $ item</ span > , container) {
947971 < span class ="keyword "> return</ span > < span class ="predefined-constant "> true</ span >
948972}</ pre > </ div >
949973</ div >
950974
951975</ td >
952976< td > Check if the dragged item may be inside the container. Use with care, since the search for a valid container entails a depth first search and may be quite expensive.</ td >
977+ </ tr > < tr > < td >
978+ < code > onCancel</ code >
979+ </ td >
980+ < td >
981+ < div class ="CodeRay ">
982+ < div class ="code "> < pre > < span class ="keyword "> function</ span > (< span class ="predefined "> $item</ span > , container, _super) {
983+ }</ pre > </ div >
984+ </ div >
985+
986+ </ td >
987+ < td > Executed before onDrop if placeholder is detached. This happens if pullPlaceholder is set to false and the drop occurs outside a container.</ td >
953988</ tr > < tr > < td >
954989 < code > onDrag</ code >
955990</ td >
956991< td >
957992 < div class ="CodeRay ">
958- < div class ="code "> < pre > < span class ="keyword "> function</ span > (item, position, _super) {
959- item.css(position)
993+ < div class ="code "> < pre > < span class ="keyword "> function</ span > (< span class =" predefined " > $ item</ span > , position, _super) {
994+ < span class =" predefined " > $ item</ span > .css(position)
960995}</ pre > </ div >
961996</ div >
962997
@@ -967,12 +1002,12 @@ <h2 id='group-options'>Group options</h2>
9671002</ td >
9681003< td >
9691004 < div class ="CodeRay ">
970- < div class ="code "> < pre > < span class ="keyword "> function</ span > (item, container, _super) {
971- item.css({
972- < span class ="key "> height</ span > : item.height(),
973- < span class ="key "> width</ span > : item.width()
1005+ < div class ="code "> < pre > < span class ="keyword "> function</ span > (< span class =" predefined " > $ item</ span > , container, _super) {
1006+ < span class =" predefined " > $ item</ span > .css({
1007+ < span class ="key "> height</ span > : < span class =" predefined " > $ item</ span > .height(),
1008+ < span class ="key "> width</ span > : < span class =" predefined " > $ item</ span > .width()
9741009 })
975- item.addClass(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> dragged</ span > < span class ="delimiter "> "</ span > </ span > )
1010+ < span class =" predefined " > $ item</ span > .addClass(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> dragged</ span > < span class ="delimiter "> "</ span > </ span > )
9761011 < span class ="predefined "> $</ span > (< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> body</ span > < span class ="delimiter "> "</ span > </ span > ).addClass(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> dragging</ span > < span class ="delimiter "> "</ span > </ span > )
9771012}</ pre > </ div >
9781013</ div >
@@ -984,8 +1019,8 @@ <h2 id='group-options'>Group options</h2>
9841019</ td >
9851020< td >
9861021 < div class ="CodeRay ">
987- < div class ="code "> < pre > < span class ="keyword "> function</ span > ( item, container, _super) {
988- item.removeClass(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> dragged</ span > < span class ="delimiter "> "</ span > </ span > ).attr(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> style</ span > < span class ="delimiter "> "</ span > </ span > ,< span class ="string "> < span class ="delimiter "> "</ span > < span class ="delimiter "> "</ span > </ span > )
1022+ < div class ="code "> < pre > < span class ="keyword "> function</ span > ( < span class =" predefined " > $ item</ span > , container, _super) {
1023+ < span class =" predefined " > $ item</ span > .removeClass(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> dragged</ span > < span class ="delimiter "> "</ span > </ span > ).attr(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> style</ span > < span class ="delimiter "> "</ span > </ span > ,< span class ="string "> < span class ="delimiter "> "</ span > < span class ="delimiter "> "</ span > </ span > )
9891024 < span class ="predefined "> $</ span > (< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> body</ span > < span class ="delimiter "> "</ span > </ span > ).removeClass(< span class ="string "> < span class ="delimiter "> "</ span > < span class ="content "> dragging</ span > < span class ="delimiter "> "</ span > </ span > )
9901025}</ pre > </ div >
9911026</ div >
@@ -1012,6 +1047,22 @@ <h2 id='group-options'>Group options</h2>
10121047
10131048</ td >
10141049< td > If true, the position of the placeholder is calculated on every mousemove. If false, it is only calculated when the mouse is above a container.</ td >
1050+ </ tr > < tr > < td >
1051+ < code > serialize</ code >
1052+ </ td >
1053+ < td >
1054+ < div class ="CodeRay ">
1055+ < div class ="code "> < pre > < span class ="keyword "> function</ span > (< span class ="predefined "> $parent</ span > , < span class ="predefined "> $children</ span > , parentIsContainer) {
1056+ < span class ="keyword "> var</ span > result = < span class ="predefined "> $</ span > .extend({}, < span class ="predefined "> $parent</ span > .data())
1057+ < span class ="keyword "> if</ span > (< span class ="predefined "> $children</ span > [< span class ="integer "> 0</ span > ])
1058+ result.children = < span class ="predefined "> $children</ span >
1059+ < span class ="keyword "> delete</ span > result.sortable
1060+ < span class ="keyword "> return</ span > result
1061+ }</ pre > </ div >
1062+ </ div >
1063+
1064+ </ td >
1065+ < td > Specifies serialization of the container group. The pair $parent/$children is either container/items or item/subcontainers</ td >
10151066</ tr >
10161067 </ tbody >
10171068 </ table >
@@ -1092,6 +1143,9 @@ <h1>Alternatives</h1>
10921143 < li >
10931144 < a href ='http://jqueryui.com/demos/sortable/ '> jQuery UI sortable</ a >
10941145 </ li >
1146+ < li >
1147+ < a href ='http://dbushell.github.com/Nestable/ '> Nestable (requires no jQuery UI)</ a >
1148+ </ li >
10951149 < li >
10961150 < a href ='http://mjsarfatti.com/sandbox/nestedSortable/ '> nestedSortable</ a >
10971151 (an extension of jQuery UI)
0 commit comments