{"id":7747,"date":"2022-04-30T05:38:24","date_gmt":"2022-04-30T05:38:24","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=7747"},"modified":"2022-04-30T05:38:24","modified_gmt":"2022-04-30T05:38:24","slug":"ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/","title":{"rendered":"Ordenar elementos con SortableJS y guardar el orden en localStorage"},"content":{"rendered":"<p>Hace bien poco he estado hablando de lo hermoso que es encontrarse con herramientas como <strong>SortableJS<\/strong>, una extensi\u00f3n de <strong>JavaScript<\/strong> que vas a poder utilizar en tus desarrollos para ofrecer a tus ususarios la posibilidad de arrastrar y soltar elementos con el objetivo de cambiarlos de posici\u00f3n.<\/p>\n<p>Para saber que es <strong>SortableJS<\/strong> y como poder empezar, puedes ver el siguiente tutorial:<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"59oTTxwWIC\"><p><a href=\"https:\/\/www.jose-aguilar.com\/blog\/arrastra-y-suelta-con-sortablejs\/\">Arrastra y suelta con SortableJS<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"\u00abArrastra y suelta con SortableJS\u00bb \u2014 Jose Aguilar Blog\" src=\"https:\/\/www.jose-aguilar.com\/blog\/arrastra-y-suelta-con-sortablejs\/embed\/#?secret=4W0nsdmiXr#?secret=59oTTxwWIC\" data-secret=\"59oTTxwWIC\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>En este art\u00edculo vas a descubrir como arrastrar y soltar elementos para posicionarlos en otro lugar y que las nuevas posiciones de los elementos queden registradas en <strong>localStorage<\/strong> para una pr\u00f3xima sesi\u00f3n.<\/p>\n<p>El objeto <strong>localStorage<\/strong> te permite almacenar datos de manera local en el navegador del usuario sin necesidad de realizar una conexi\u00f3n a una base de datos.<\/p>\n<h2>Lista de elementos a ordenar<\/h2>\n<p>En el ejemplo en funcionamiento estoy usando una lista de tarjetas de <strong>Bootstrap<\/strong> para darles a cada elemento un aspecto agradable, r\u00e1pido y diferente.<\/p>\n<p>En el cuerpo de la p\u00e1gina o dentro del &lt;body&gt; puedes incluir el c\u00f3digo <strong>HTML<\/strong> de los elementos que voy a ordenar:<\/p>\n<div id=\"wpshdo_1\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_1\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_1\"><\/a><a id=\"wpshat_1\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_1\"  onClick=\"javascript:wpsh_toggleBlock(1)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_code(1)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_1\" onClick=\"javascript:wpsh_print(1)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_1\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;row sortable&quot;<\/span>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-3&quot;<\/span> data-<span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;1&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card text-white bg-primary mb-3&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;max-width: 18rem;&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-header&quot;<\/span>&gt;<\/span>Header<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-body&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-title&quot;<\/span>&gt;<\/span>Primary card title<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-text&quot;<\/span>&gt;<\/span>Some quick example text to build on the card title and make up the bulk of the card's content.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-3&quot;<\/span> data-<span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;2&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card text-white bg-secondary mb-3&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;max-width: 18rem;&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-header&quot;<\/span>&gt;<\/span>Header<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-body&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-title&quot;<\/span>&gt;<\/span>Secondary card title<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-text&quot;<\/span>&gt;<\/span>Some quick example text to build on the card title and make up the bulk of the card's content.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-3&quot;<\/span> data-<span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;3&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card text-white bg-success mb-3&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;max-width: 18rem;&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-header&quot;<\/span>&gt;<\/span>Header<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-body&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-title&quot;<\/span>&gt;<\/span>Success card title<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-text&quot;<\/span>&gt;<\/span>Some quick example text to build on the card title and make up the bulk of the card's content.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-3&quot;<\/span> data-<span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;4&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card text-white bg-danger mb-3&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;max-width: 18rem;&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-header&quot;<\/span>&gt;<\/span>Header<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-body&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-title&quot;<\/span>&gt;<\/span>Danger card title<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-text&quot;<\/span>&gt;<\/span>Some quick example text to build on the card title and make up the bulk of the card's content.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-3&quot;<\/span>  data-<span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;5&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card text-white bg-warning mb-3&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;max-width: 18rem;&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-header&quot;<\/span>&gt;<\/span>Header<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-body&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-title&quot;<\/span>&gt;<\/span>Warning card title<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-text&quot;<\/span>&gt;<\/span>Some quick example text to build on the card title and make up the bulk of the card's content.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-3&quot;<\/span> data-<span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;6&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card text-white bg-info mb-3&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;max-width: 18rem;&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-header&quot;<\/span>&gt;<\/span>Header<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-body&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-title&quot;<\/span>&gt;<\/span>Info card title<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-text&quot;<\/span>&gt;<\/span>Some quick example text to build on the card title and make up the bulk of the card's content.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-3&quot;<\/span> data-<span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;7&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card bg-light mb-3&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;max-width: 18rem;&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-header&quot;<\/span>&gt;<\/span>Header<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-body&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-title&quot;<\/span>&gt;<\/span>Light card title<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-text&quot;<\/span>&gt;<\/span>Some quick example text to build on the card title and make up the bulk of the card's content.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;col-lg-3&quot;<\/span> data-<span class=\"kw3\">id<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;8&quot;<\/span>&gt;<\/span>\n        <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card text-white bg-dark mb-3&quot;<\/span> <span class=\"kw3\">style<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;max-width: 18rem;&quot;<\/span>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-header&quot;<\/span>&gt;<\/span>Header<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-body&quot;<\/span>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-title&quot;<\/span>&gt;<\/span>Dark card title<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/h5.html\"><span class=\"kw2\">h5<\/span><\/a>&gt;<\/span>\n                <span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a> <span class=\"kw3\">class<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;card-text&quot;<\/span>&gt;<\/span>Some quick example text to build on the card title and make up the bulk of the card's content.<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/p.html\"><span class=\"kw2\">p<\/span><\/a>&gt;<\/span>\n            <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n        <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span>\n    <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span> \n<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/div.html\"><span class=\"kw2\">div<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<p>Sobre este c\u00f3digo debes prestar especial atenci\u00f3n a que cada elemento o tarjeta tiene un identificador o el atributo <em>data-id<\/em> que ser\u00e1 el que utilizaremos para guardarlo en una lista ordenada en <strong>localStorage<\/strong>.<\/p>\n<h2>Inclusi\u00f3n del objeto SortableJS<\/h2>\n<p>Antes de la etiqueta de cierre del &lt;body&gt; puedes agregar el script:<\/p>\n<div id=\"wpshdo_2\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_2\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_2\"><\/a><a id=\"wpshat_2\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_2\"  onClick=\"javascript:wpsh_toggleBlock(2)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_code(2)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_2\" onClick=\"javascript:wpsh_print(2)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_2\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"html4strict\" style=\"font-family:monospace;\"><span class=\"sc2\">&lt;<a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;https:\/\/cdn.jsdelivr.net\/npm\/sortablejs@latest\/Sortable.min.js&quot;<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><a href=\"http:\/\/december.com\/html\/4\/element\/script.html\"><span class=\"kw2\">script<\/span><\/a>&gt;<\/span><\/pre><\/div><\/div>\n<p>Estoy utilizando la opci\u00f3n CDN para ir r\u00e1pido pero tu podr\u00edas ir a la p\u00e1gina oficial de <strong>SortableJS<\/strong> para descargar y depositar los archivos en tu proyecto.<\/p>\n<h2>Creaci\u00f3n del objeto SortableJS<\/h2>\n<p>A continuaci\u00f3n, tambi\u00e9n antes de la etiqueta de cierre del &lt;body&gt; pero despu\u00e9s de la inclusi\u00f3n de la clase <strong>SortableJS<\/strong> debes crear la instancia del objeto con el que vas a trabajar.<\/p>\n<p>F\u00edjate a continuaci\u00f3n:<\/p>\n<div id=\"wpshdo_3\" class=\"wp-synhighlighter-outer\"><div id=\"wpshdt_3\" class=\"wp-synhighlighter-expanded\"><table border=\"0\" width=\"100%\"><tr><td align=\"left\" width=\"80%\"><a name=\"#codesyntax_3\"><\/a><a id=\"wpshat_3\" class=\"wp-synhighlighter-title\" href=\"#codesyntax_3\"  onClick=\"javascript:wpsh_toggleBlock(3)\" title=\"Click to show\/hide code block\">Source code<\/a><\/td><td align=\"right\"><a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_code(3)\" title=\"Show code only\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/code.png\" \/><\/a>&nbsp;<a href=\"#codesyntax_3\" onClick=\"javascript:wpsh_print(3)\" title=\"Print code\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/printer.png\" \/><\/a>&nbsp;<a href=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/About.html\" target=\"_blank\" title=\"Show plugin information\"><img decoding=\"async\" border=\"0\" style=\"border: 0 none\" src=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/plugins\/wp-synhighlight\/themes\/default\/images\/info.gif\" \/><\/a>&nbsp;<\/td><\/tr><\/table><\/div><div id=\"wpshdi_3\" class=\"wp-synhighlighter-inner\" style=\"display: block;\"><pre class=\"javascript\" style=\"font-family:monospace;\"><span class=\"sy0\">&lt;<\/span>script<span class=\"sy0\">&gt;<\/span>\n<span class=\"kw2\">var<\/span> items <span class=\"sy0\">=<\/span> document.<span class=\"me1\">querySelector<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'.sortable'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\nSortable.<span class=\"me1\">create<\/span><span class=\"br0\">&#40;<\/span>items<span class=\"sy0\">,<\/span> <span class=\"br0\">&#123;<\/span>\n    animation<span class=\"sy0\">:<\/span> <span class=\"nu0\">150<\/span><span class=\"sy0\">,<\/span>\n    chosenClass<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;seleccionado&quot;<\/span><span class=\"sy0\">,<\/span>\n    ghostClass<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;fantasma&quot;<\/span><span class=\"sy0\">,<\/span>\n    dragClass<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;drag&quot;<\/span><span class=\"sy0\">,<\/span>\n    onEnd<span class=\"sy0\">:<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span>\n        console.<span class=\"me1\">log<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'se insert\u00f3 un elemento'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n    <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n    group<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;cards&quot;<\/span><span class=\"sy0\">,<\/span>\n    store<span class=\"sy0\">:<\/span> <span class=\"br0\">&#123;<\/span>\n        set<span class=\"sy0\">:<\/span><span class=\"br0\">&#40;<\/span>sortable<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span>\n            <span class=\"kw2\">const<\/span> orden <span class=\"sy0\">=<\/span> sortable.<span class=\"me1\">toArray<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            localStorage.<span class=\"me1\">setItem<\/span><span class=\"br0\">&#40;<\/span>sortable.<span class=\"me1\">options<\/span>.<span class=\"me1\">group<\/span>.<span class=\"kw3\">name<\/span><span class=\"sy0\">,<\/span> orden.<span class=\"me1\">join<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'|'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span>\n        <span class=\"co1\">\/\/obtener orden de la lista<\/span>\n        get<span class=\"sy0\">:<\/span> <span class=\"br0\">&#40;<\/span>sortable<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">&#123;<\/span>\n            <span class=\"kw2\">const<\/span> orden <span class=\"sy0\">=<\/span> localStorage.<span class=\"me1\">getItem<\/span><span class=\"br0\">&#40;<\/span>sortable.<span class=\"me1\">options<\/span>.<span class=\"me1\">group<\/span>.<span class=\"kw3\">name<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n            <span class=\"kw1\">return<\/span> orden <span class=\"sy0\">?<\/span> orden.<span class=\"me1\">split<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'|'<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">:<\/span> <span class=\"br0\">[<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span>\n        <span class=\"br0\">&#125;<\/span>\n    <span class=\"br0\">&#125;<\/span>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy0\">&lt;\/<\/span>script<span class=\"sy0\">&gt;<\/span><\/pre><\/div><\/div>\n<p>Con querySelector selecciono el contenedor que contiene los elementos que tendr\u00e1n este comportamiento y luego paso el elemento como primer par\u00e1metro de la funci\u00f3n Sortable.create().<\/p>\n<p>En el segundo par\u00e1metro de esta funci\u00f3n puedes definir las opciones.<\/p>\n<p>En el caso del ejemplo:<\/p>\n<ul>\n<li>Defino una animaci\u00f3n estableciendo una duraci\u00f3n de 150ms.<\/li>\n<li>Establezco la clase \u00abchosen\u00bb para personalizar mediante CSS como ser\u00e1 el aspecto del elemento seleccionado.<\/li>\n<li>Declaro la clase \u00abghost\u00bb para personalizar mediante CSS el elemento fantasma.<\/li>\n<li>Defino la clase \u00abdrag\u00bb para personalizar mediante CSS el elemento arrastrado.<\/li>\n<li>Uso la funci\u00f3n onEnd() para mostrar un mensaje en consola.<\/li>\n<\/ul>\n<h2>Par\u00e1metros de SortableJS para guardar en localStorage<\/h2>\n<p>Definir el group de <strong>SortableJS<\/strong> es clave para poder guardarlo. En el caso del ejemplo, le he puesto el nombre de \u00abcards\u00bb.<\/p>\n<p><strong>SortableJS<\/strong> tiene un objeto Store que permite guardar el estado de los elementos ordenables.<\/p>\n<p>Utilizo la funci\u00f3n set() para obtener el array de elementos o tarjetas y guardarlo en <strong>localStorage<\/strong> con setItem().<\/p>\n<p>Esta funci\u00f3n setItem() tiene 2 par\u00e1metros:<\/p>\n<ul>\n<li>El nombre del grupo de elementos. En este caso, ser\u00eda lo mismo poner \u00abcards\u00bb.<\/li>\n<li>Cadena con los identificadores de los elementos separados por el s\u00edmbolo \u00ab|\u00bb.<\/li>\n<\/ul>\n<p>Para recuperar el orden de la lista se puede emplear la funci\u00f3n get() del objeto Store pas\u00e1ndole como argumento el objeto sortable.<\/p>\n<p>Con la funci\u00f3n getItem() de <strong>localStorage<\/strong> recupero la lista de elementos ordenados y lo retorno como un array.<\/p>\n<p style=\"text-align: center;\"><a class=\"btn btn-secondary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/javascript\/sortablejs-localStorage\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"fa fa-eye\"><\/i> Ver demo<\/a> <a class=\"btn btn-primary\" href=\"https:\/\/www.jose-aguilar.com\/scripts\/javascript\/sortablejs-localStorage\/sortablejs-localStorage.zip\"><i class=\"fa fa-download\"><\/i> Descargar<\/a><\/p>\n<h2>Conclusiones<\/h2>\n<p>Como podr\u00e1s observar es bastante sencillo y r\u00e1pido guardar los elementos ordenados de la lista en <strong>localStorage<\/strong>.<\/p>\n<p>Guardar informaci\u00f3n en <strong>localStorage<\/strong> puede ser muy \u00fatil cuando necesitas guardar peque\u00f1as informaciones del usuario para mantenerlas activas mientras navega por el sitio web.<\/p>\n<p>Para guardar el orden de una lista con <strong>JavaScript<\/strong> puede ser de gran utilidad.<\/p>\n<p>Sin embargo, quiz\u00e1s est\u00e1s m\u00e1s bien acostumbrado a guardar los registros en la base de datos.<\/p>\n<p>Pronto publicar\u00e9 una nueva entrada para que veas como ser\u00eda guardar los movimientos de <strong>SortableJS<\/strong> y guardarlos en una base de datos. Estate atento a las novedades.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Descubre como ordenar elementos y guardar la informaci\u00f3n de los cambios de posici\u00f3n usando SortableJS y localStorage.<\/p>\n","protected":false},"author":1,"featured_media":7748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[74,193,192],"class_list":["post-7747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript","tag-contenedores","tag-localstorage","tag-sortable"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ordenar elementos con SortableJS y guardar el orden en localStorage - Jose Aguilar Blog<\/title>\n<meta name=\"description\" content=\"Descubre como ordenar elementos y guardar la informaci\u00f3n de los cambios de posici\u00f3n usando SortableJS y localStorage.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ordenar elementos con SortableJS y guardar el orden en localStorage - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"Descubre como ordenar elementos y guardar la informaci\u00f3n de los cambios de posici\u00f3n usando SortableJS y localStorage.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-30T05:38:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/04\/Arrastra-y-suelta-con-SortableJS-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/\",\"name\":\"Ordenar elementos con SortableJS y guardar el orden en localStorage - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/04\/Arrastra-y-suelta-con-SortableJS-1.png\",\"datePublished\":\"2022-04-30T05:38:24+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"description\":\"Descubre como ordenar elementos y guardar la informaci\u00f3n de los cambios de posici\u00f3n usando SortableJS y localStorage.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/04\/Arrastra-y-suelta-con-SortableJS-1.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/04\/Arrastra-y-suelta-con-SortableJS-1.png\",\"width\":500,\"height\":500,\"caption\":\"SortableJS y localStorage\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ordenar elementos con SortableJS y guardar el orden en localStorage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ordenar elementos con SortableJS y guardar el orden en localStorage - Jose Aguilar Blog","description":"Descubre como ordenar elementos y guardar la informaci\u00f3n de los cambios de posici\u00f3n usando SortableJS y localStorage.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Ordenar elementos con SortableJS y guardar el orden en localStorage - Jose Aguilar Blog","og_description":"Descubre como ordenar elementos y guardar la informaci\u00f3n de los cambios de posici\u00f3n usando SortableJS y localStorage.","og_url":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2022-04-30T05:38:24+00:00","og_image":[{"width":500,"height":500,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/04\/Arrastra-y-suelta-con-SortableJS-1.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/","url":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/","name":"Ordenar elementos con SortableJS y guardar el orden en localStorage - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/04\/Arrastra-y-suelta-con-SortableJS-1.png","datePublished":"2022-04-30T05:38:24+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"description":"Descubre como ordenar elementos y guardar la informaci\u00f3n de los cambios de posici\u00f3n usando SortableJS y localStorage.","breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/04\/Arrastra-y-suelta-con-SortableJS-1.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2022\/04\/Arrastra-y-suelta-con-SortableJS-1.png","width":500,"height":500,"caption":"SortableJS y localStorage"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/ordenar-elementos-con-sortablejs-y-guardar-el-orden-en-localstorage\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ordenar elementos con SortableJS y guardar el orden en localStorage"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/7747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=7747"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/7747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/7748"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=7747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=7747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=7747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}