带有子项和属性的 JSON 输出 jQuery div 容器

Posted

技术标签:

【中文标题】带有子项和属性的 JSON 输出 jQuery div 容器【英文标题】:JSon Output jQuery div Containers with Children & Attributes 【发布时间】:2015-02-12 11:55:50 【问题描述】:

我目前正在使用 jsPlumb 并在保存和加载容器时陷入困境。我想出了如何保存端点、连接和位置。 但我不知道如何保存 div 容器,包括它们的属性、孩子和孩子的属性。 这是容器的sn-p,有什么想法可以将它们串起来吗?

<div class="window main node ui-draggable _jsPlumb_endpoint_anchor_" id="maincontainer1" data-nodetype="main" style="left: 663px; top: 200px; width: 230px; height: 200px;">
	<div class="ctrl_container">
		<div class="button_rm">x</div>
	</div>
	<div class="layer" id="layercontainer1_1" style="height: 80px; width: 100%; background: none repeat scroll 0% 0% transparent;">
		<div class="window filter node" style="left:25px; top:5px;" name="3#2#ABC#" id="filtercontainer2_1_1">
			<div class="ctrl_container">
				<a class="filter_caption edit" href="#">Edit</a>
				<div class="button_rm">x</div>
			</div>
			<div class="details_container">
				<span id="filter_label" class="filter_label jtextfill" style="font-size: 22px;">PrimarySupportGrp =  123</span>
			</div>
		</div>
	</div>
	<div class="layer" id="layercontainer1_2" style="height: 90px; width: 100%; background: none repeat scroll 0% 0% rgba(0, 255, 255, 0.4);"><div class="line-separator"></div>
		<div class="window filter node" style="left:25px; top:5px;" name="5#4#Yes#" id="filtercontainer2_2_1">
			<div class="ctrl_container">
				<a class="filter_caption edit" href="#">Edit</a>
				<div class="button_rm">x</div>
			</div>
			<div style="" class="details_container">
				<span id="filter_label" class="filter_label jtextfill" style="font-size: 14px;"> Site   &gt;  Yes</span>
			</div>
		</div>
	</div>
</div>

【问题讨论】:

【参考方案1】:

我不建议保存完整的子层次结构,但如果您愿意 - 为什么不使用 .html()

var data = [];
$(".layer").each(function()
    var html = $(this).html();
    data.push(html);
);

只需保存在正确位置重新渲染它们所需的内容 - 左侧、顶部等。

for(var i=0 ; i<length; i++)
  var layerTemplate = "...div template html goes here";
  var $layerTemplate = $(layerTemplate);
  $layerTemplate.css(top : data[i].top , left : data[i].left);
  $("#maincontainer1").append($layerTemplate);

前段时间我写了一个脚本来保存和重新渲染 jsPlumb - https://github.com/nitinsurana/jsPlumb-Persistence

【讨论】:

以上是关于带有子项和属性的 JSON 输出 jQuery div 容器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有 json 和 php 的 jquery 的 $.ajax 函数上传文件

带有点运算符的 jquery jqgrid 属性

无法使用Javascript或JQuery修剪对象属性

带有 JSON 数组的 Jquery - 转换为 Javascript 数组

在自定义对象类型的核心数据中保存带有子项的类别

带有 TextBox 子项的 TreeView SelectedItem 行为