Перетаскивание из localstorage HTML5 не работает
I have created a web page with drag and drop features for some of the elements. Once the drag and drop are done, I store the elements which are in the droppable area in the local storage of the browser. Later when the page is accessed again, I take the values from local storage and restore them on the web page. After I restore, I couldn't drag the elements in the droppable area within its containment. Could anyone please help? Below is the code I have used.
Вот ссылка на скрипку моей работы:
ИГРАТЬ НА СКРИПКЕ
Что я уже пробовал:
JS:
$(function () { if (localStorage.length != 0) { for (var i = 0; i < localStorage.length; i++) { var dropClass = localStorage.key(i); var clonediv = $("." + dropClass.substr(4, dropClass.length - 4)).clone(); $("#droppable").append(clonediv.draggable({ containment: "#droppable", grid: [30, 30] }).resizable({ containment: "#droppable" })); console.log(clonediv); } } else { } $(".bat_voltage").draggable({ helper: 'clone', snap: true, grid: [30,30] }); $(".left_flight").draggable({ helper: 'clone', snap: true, grid: [30, 30] }); $(".cnt_flight").draggable({ helper: 'clone', snap: true, grid: [30, 30] }); $("#droppable").droppable({ drop: function (event, ui) { var dragged = ui.draggable; var id = dragged.attr("class").split(' '); var droppable = $("#droppable"); var find = (droppable.find("." + id[0])); console.log(find); if (find.length != 0) { } else { localStorage.setItem("drop" + id[0], droppable); ui.helper.css({ 'top': 0, 'left': 0, 'position': 'relative', 'margin': '0px auto', 'padding': '0.5em', 'z-index': 0 }); ui.helper.clone().appendTo("#droppable").draggable({ snap: true, grid: [30, 30] }).resizable({ containment: "#droppable" }); } } }); });
CSS:
.bat_voltage { ширина: шириной 250 пикселей и следующий; высота: 100 пикселей; обивка: 0.5 ем; маржа: 10 ПКС 10 ПКС значение 10px 0; z-индекса:1; }
.floatleft { поплавок:слева; }
.left_flight { ширина: шириной 250 пикселей и следующий; высота: 100 пикселей; обивка: 0.5 ем; маржа: 10 ПКС 10 ПКС значение 10px 0; z-индекса:1; }
.cnt_flight { ширина: шириной 250 пикселей и следующий; высота: 100 пикселей; обивка: 0.5 ем; маржа: 10 ПКС 10 ПКС значение 10px 0; z-индекса:1; }
#десантирования { ширина: 50%; высота: 400 пикселей; обивка: 0.5 ем; маржа: значение 10px; размер:оба; границы: 2 пикселя; переполнение:авто; }
HTML:
<div> <div> <div class="bat_voltage floatleft ui-widget-content" > <p>Battery Voltage</p> </div> <div class="left_flight floatleft ui-widget-content" > <p>Flight Time Left</p> </div> <div class="cnt_flight floatleft ui-widget-content" > <p>Current Flight Time</p> <div class="curFlight"></div> </div> <div style="clear:both"></div> </div> <div id="droppable" class="ui-widget-header"> <p>Drop here</p> </div> </div>
ZurdoDev
Отладьте свой код. После загрузки из localStorage вызывается ли перетаскиваемый метод для элементов?
Giridharan_BE
Я могу перетащить после восстановления из localstorage. Но не может упасть и в другом месте в пределах его сдерживания.
ZurdoDev
Убедитесь, что droppable подключается правильно.
Giridharan_BE
Извиняюсь. Что вы имеете в виду, подключившись должным образом? Не могли бы Вы уточнить?
ZurdoDev
Проверьте $("#droppable").length (), чтобы убедиться, что это > 0.
Giridharan_BE
Я только что проверил $("#droppable").длина(). Это 1.
ZurdoDev
Это означает, что у вас есть один предмет, на который можно упасть. Вам придется отладить его и выяснить, что происходит. Мы не можем запустить ваш код, поэтому я не уверен, что мы можем сделать для вас.
Giridharan_BE
Я могу перетащить виджеты, восстановленные из локального хранилища. Но я не мог упасть вместе с защитной оболочкой. Он просто возвращается к тому месту, откуда его вытащили.
Giridharan_BE
Я дал ссылку на скрипку моего запроса. Пожалуйста, проверьте и дайте мне знать, если у вас есть какие-либо замечания или предложения.
ZurdoDev
скрипка ссылка дает 404.
Giridharan_BE
Извините, что я не сделал свою скрипку публичной. Теперь я знал. Пожалуйста, проверьте