从本地存储拖放HTML5不工作
Drag and Drop from localstorage HTML5 not working
我已经为一些元素创建了一个带有拖放功能的网页。
拖放完成后,我将可拖放区域中的元素存储在浏览器的本地存储中。
之后,当再次访问页面时,我从本地存储中获取值并在网页上恢复它们。
在我恢复后,我无法拖动可拖放区域内的元素。有人能帮忙吗?下面是我使用的代码:
这里是的链接。
HTML×
电池电压<div class="left_flight floatleft ui-widget-content">
<a class="boxclose displayblock">×</a>
<p>Flight Time Left</p>
<div class="flightLeft"></div>
</div>
<div class="cnt_flight floatleft ui-widget-content">
<a class="boxclose displayblock">×</a>
<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>
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();
var droppable = $("#droppable");
clonediv.appendTo(droppable);
clonediv
//.draggable({ revert: false, grid: [30, 30], scroll: true })
//.sortable()
.resizable({
containment: "#droppable"
});
clonediv.find('a').removeClass("displayblock").click(function() {
var par = $(this).parent();
var id = par.attr("class").split(' ');
var droppable = $("#droppable");
var removing = droppable.find("." + id[0]);
removing.remove();
localStorage.removeItem("drop" + id[0]);
});
}
} else {}
$(".bat_voltage").draggable({
revert: true,
grid: [30, 30],
scroll: true
});
$(".left_flight").draggable({
revert: true,
grid: [30, 30],
scroll: true
});
$(".cnt_flight").draggable({
revert: true,
grid: [30, 30],
scroll: true
});
$("#droppable").droppable({
drop: function(event, ui) {
var dragged = ui.draggable;
var id = dragged.attr("class").split(' ');
var droppable = $("#droppable");
var findElement = (droppable.find("." + id[0]));
if (findElement.length != 0) {} else {
ui.helper.css({
'top': 0,
'left': 0,
'position': 'relative'
});
ui.helper.clone()
.appendTo(droppable)
.draggable({
containment: "#droppable",
grid: [30, 30],
snap: true
})
.resizable({
containment: "#droppable"
}).sortable({
revert: false
});
droppable.find("." + id[0]).find('a').removeClass("displayblock").click(function() {
var par = $(this).parent();
var id = par.attr("class").split(' ');
var droppable = $("#droppable");
var removing = droppable.find(findElement);
removing.remove();
localStorage.removeItem("drop" + id[0]);
});
localStorage.setItem("drop" + id[0], droppable);
}
}
});
});
CSS: .bat_voltage { width: 250px; height: 100px; padding: 0.5em; margin: 10px 10px 10px 0; z-index: 1; }
.floatleft { float: left; }
.left_flight { width: 250px; height: 100px; padding: 0.5em; margin: 10px 10px 10px 0; z-index: 1; }
.cnt_flight { width: 250px; height: 100px; padding: 0.5em; margin: 10px 10px 10px 0; z-index: 1; }
#droppable { width: 50%; height: 400px; padding: 0.5em; margin: 10px; resize: both; border: 2px; overflow: auto; }
#progressbar { width: 200px; height: 50px; margin-top: 20px; }
a.boxclose { float: right; margin-top: -10px; margin-right: -10px; cursor: pointer; color: #fff; border: 1px solid #AEAEAE; border-radius: 8px;
background: #605F61; font-size: 21px; font-weight: bold; display: inline-block; line-height: 0px; padding: 8px 3px; display: block; }
.displaynone { display: none !important; }
.displayblock { display: none !important; }
这一定是由于元素没有被拖到可拖放区域而导致的,因此使revert参数处于活动状态。不知道如何解决这个问题,而不是在开始时禁用它里面的元素:
$('#droppable .ui-draggable').draggable( "option", "revert", false );
工作小提琴相关文章:
- HTML5音频加载和播放获胜'我不能在iPad上工作
- html5画布动画无法正常工作
- HTML5 Shiv谷歌CDN链接不工作
- 我如何使HTML5<输入类型=月份>以在所有浏览器上工作
- HTML5视频无法在chrome上工作,在服务器上托管后的IE,mov文件中的视频(quicktime格式)
- HTML5 Canvas undo是'在IE或Firefox中无法正常工作
- 为什么除了html5输入模式属性之外,这个简单的regex在任何地方都能工作
- 自动加载的html5播放器不工作
- 动画HTML5横幅工作在除Safari以外的一切
- HTML5视频在本地正常工作,但不在托管服务器上
- html5表单工作不正常
- 我如何才能让这个HTML5全屏功能在Firefox中也能工作
- 本地存储在使用 js 和 html5 的游戏中无法正常工作
- 可以'不要让HTML5音频标签在移动浏览器上工作
- javascript、html5表单.为什么不;t这项工作
- 为什么这个html5音频不能在chrome上工作,但在safari上工作得很好
- 如何让我的html5功能不兼容警告使用javascript工作
- 如何使HTML5在没有JS或Jquery的情况下工作
- HTML5 箭头键无法正常工作
- 如何在脱机工作时将数据写入和更新 HTML5 缓存的网页