问题描述
我在单击菜单按钮时动态生成可拖动/可调整大小的 jQuery 项。我需要将项目坐标/属性保存到 localStorage。我有这个处理静态项目,但它不适用于动态。在生成动态项之前和之后,控制台日志为 localStorage 返回“undefined”。
代码如下:
HTML:
<div id="containment-wrapper">
</div>
jQuery
var positions = JSON.parse(localStorage.positions || "{}");
$(function () {
//store coordinates of items - CURRENTLY NOT FUNCTIONING
var d = $("[class=draggable]").attr("id",function (i) {
return "draggable_" + i;
});
$.each(positions,function (id,pos) {
$("#" + id).css(pos);
});
d.draggable({
containment: "#containment-wrapper",stack: ".draggable",scroll: false,stop: function (event,ui) {
positions[this.id] = ui.position;
localStorage.positions = JSON.stringify(positions);
}
});
function getPositions() {
return localStorage.positions;
} //
console.log(getPositions());
// END store coordinates
//reset storage and reload page
$("#clear").click(function () {
window.localStorage.clear();
window.location.reload(true);
});
//DYNAMICALLY generate new copies of items WITH UNIQUE ID
var i = 1;
$("#product").click(function () {
var dynamic_div = $("<div />",{
id: "product" + i
})
.css({
id: "draggable",padding: "0.5em",//float: "left",margin: "0 10px 10px 0",cursor: "move",position: "absolute",background: "white"
// border: "1px solid #ccc"
})
.addClass("draggable","ui-widget-content");
$(dynamic_div)
.append(
'<div id="block_container"><div class="remove_block"></div><img src="image.svg" alt="Product"></div>'
)
.css({
width: 100
});
$(dynamic_div).append("<div>Product</div>").css({
"text-align": "center","font-size": "24px",padding: " 0.25em","line-height": "100%"
//"white-space": "Nowrap"
});
// APPEND THE NEWLY CREATED DIV TO "containment-wrapper".
$(dynamic_div)
.appendTo("#containment-wrapper")
.draggable({
containment: "#containment-wrapper",scroll: false
})
.resizable({
minHeight: 100,minWidth: 100,maxHeight: 500,maxWidth: 500,aspectRatio: false
});
i++;
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)