- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当前从服务器加载 JSON 数据并最终将它们显示在可折叠集中,如下所示:
我试图按如下方式显示它 - 嵌套的可折叠集。有什么办法可以实现这一点吗?
我的第一张图片的代码:
//JS CODE
$(document).on("pageinit", "#view", function () {
$.getJSON("http://www.examplesite.com/view.php", function (data) {
$.each(data, function (elem) {
var wrap = $("<div/>").attr('data-role', 'collapsible');
$("<h1/>", {
text: data[elem].type
}).appendTo(wrap);
$("<p/>", {
text: "Name: " + data[elem].name
}).appendTo(wrap);
$("<p/>", {
text: "Quantity: " + data[elem].quantity
}).appendTo(wrap);
$("<p/>", {
text: "Barcode: " + data[elem].barcode
}).appendTo(wrap);
$("<p/>", {
text: "Detail: " + data[elem].detail
}).appendTo(wrap);
wrap.appendTo('#view-list');
});
$("#view-list").collapsibleset();
});
});
<!--HTML CODE-->
<article data-role="content">
<div data-role="collapsible" data-collapsed="false" id="view-list">
<!--load data here-->
</div>
</article>
我尝试了以下方法来获得结果,但最终得到了 2 个独立的可折叠套件。
//JS CODE
$(document).on("pageinit", "#view", function () {
$.getJSON("http://www.examplesite.com/view.php", function (data) {
$.each(data, function (elem) {
var wrap = $("<div/>").attr('data-role', 'collapsible');
var subWrap = $("<div/>").attr('data-role', 'collapsible');
$("<h1/>", {
text: data[elem].type
}).appendTo(wrap);
$("<h2/>", {
text: data[elem].name
}).appendTo(subWrap);
$("<p/>", {
text: "Quantity: " + data[elem].quantity
}).appendTo(subWrap);
$("<p/>", {
text: "Barcode: " + data[elem].barcode
}).appendTo(subWrap);
$("<p/>", {
text: "Detail: " + data[elem].detail
}).appendTo(subWrap);
wrap.appendTo('#view-list');
subWrap.appendTo('#sub-view-list');
});
$("#view-list").collapsibleset();
$("#sub-view-list").collapsibleset();
});
});
<!--HTML Code-->
<article data-role="content">
<div data-role="collapsible" data-collapsed="false" id="view-list">
<!--first collapsible data load here-->
<div data-role="collapsible" id="sub-view-list">
<!--Sub data wil load here-->
</div>
</div>
</article>
我正在访问的 JSON 字符串:
[
{
"id": "1",
"type": "Beverage",
"name": "Orange Juice",
"quantity": "10",
"barcode": null,
"detail": "1 Ltr Bottle"
},
{
"id": "3",
"type": "Beverage",
"name": "Apple Juice",
"quantity": "10",
"barcode": null,
"detail": "1 Ltr Bottle"
},
{
"id": "4",
"type": "Beverage",
"name": "Mango Juice",
"quantity": "10",
"barcode": null,
"detail": "1 Ltr Bottle"
},
{
"id": "5",
"type": "Beverage",
"name": "Cranberry Juice",
"quantity": "20",
"barcode": null,
"detail": "2 Ltr Bottle"
},
{
"id": "6",
"type": "Beverage",
"name": "Strawberry Juice",
"quantity": "20",
"barcode": null,
"detail": "2 Ltr Bottle"
},
{
"id": "7",
"type": "Beverage",
"name": "Pear Juice",
"quantity": "15",
"barcode": null,
"detail": "1.5 Ltr Bottle"
},
{
"id": "8",
"type": "Canned Food",
"name": "Baked Beans",
"quantity": "10",
"barcode": null,
"detail": "300g"
},
{
"id": "9",
"type": "Canned Food",
"name": "Sardines",
"quantity": "10",
"barcode": null,
"detail": "300g"
},
{
"id": "10",
"type": "Canned Food",
"name": "Hot Dog",
"quantity": "20",
"barcode": null,
"detail": ""
},
{
"id": "11",
"type": "Canned Food",
"name": "Sweet Corn",
"quantity": "20",
"barcode": null,
"detail": "500g"
},
{
"id": "12",
"type": "Canned Food",
"name": "Sweet Potato",
"quantity": "15",
"barcode": null,
"detail": null
},
{
"id": "13",
"type": "Chocolate",
"name": "Carbury",
"quantity": "10",
"barcode": null,
"detail": "50g"
},
{
"id": "14",
"type": "Chocolate",
"name": "Lindt",
"quantity": "10",
"barcode": null,
"detail": "50g"
},
{
"id": "15",
"type": "Chocolate",
"name": "Kit Kat",
"quantity": "20",
"barcode": null,
"detail": "70g"
},
{
"id": "16",
"type": "Chocolate",
"name": "Mars",
"quantity": "20",
"barcode": null,
"detail": null
},
{
"id": "17",
"type": "Chocolate",
"name": "Toblerone",
"quantity": "15",
"barcode": null,
"detail": "500g"
}
]
最佳答案
我不会进入 jQuery 移动部分,因为我没有手机来测试它,但是您面临的问题可以通过将数组映射到基于新对象的方法来解决关于类型。
for(var i in data) (result[data[i].type]||(result[data[i].type]=[])).push(data[i]);
它的作用是迭代 JSON 数组,对于每个项目,它将在结果对象中为该类型创建一个新数组(如果该类型尚不存在),然后将当前项目附加到该类型数组。
我在下面构建了一个示例,使用您提供的 JSON 字符串来演示这一点,但我将把样式留给您。
var data = [{"id":"1","type":"Beverage","name":"Orange Juice","quantity":"10","barcode":null,"detail":"1 Ltr Bottle"},{"id":"3","type":"Beverage","name":"Apple Juice","quantity":"10","barcode":null,"detail":"1 Ltr Bottle"},{"id":"4","type":"Beverage","name":"Mango Juice","quantity":"10","barcode":null,"detail":"1 Ltr Bottle"},{"id":"5","type":"Beverage","name":"Cranberry Juice","quantity":"20","barcode":null,"detail":"2 Ltr Bottle"},{"id":"6","type":"Beverage","name":"Strawberry Juice","quantity":"20","barcode":null,"detail":"2 Ltr Bottle"},{"id":"7","type":"Beverage","name":"Pear Juice","quantity":"15","barcode":null,"detail":"1.5 Ltr Bottle"},{"id":"8","type":"Canned Food","name":"Baked Beans","quantity":"10","barcode":null,"detail":"300g"},{"id":"9","type":"Canned Food","name":"Sardines","quantity":"10","barcode":null,"detail":"300g"},{"id":"10","type":"Canned Food","name":"Hot Dog","quantity":"20","barcode":null,"detail":""},{"id":"11","type":"Canned Food","name":"Sweet Corn","quantity":"20","barcode":null,"detail":"500g"},{"id":"12","type":"Canned Food","name":"Sweet Potato","quantity":"15","barcode":null,"detail":null},{"id":"13","type":"Chocolate","name":"Carbury","quantity":"10","barcode":null,"detail":"50g"},{"id":"14","type":"Chocolate","name":"Lindt","quantity":"10","barcode":null,"detail":"50g"},{"id":"15","type":"Chocolate","name":"Kit Kat","quantity":"20","barcode":null,"detail":"70g"},{"id":"16","type":"Chocolate","name":"Mars","quantity":"20","barcode":null,"detail":null},{"id":"17","type":"Chocolate","name":"Toblerone","quantity":"15","barcode":null,"detail":"500g"}]
var result = {};
var list = $('#view-list');
// create the result object
for(var i in data) (result[data[i].type]||(result[data[i].type]=[])).push(data[i]);
// iterate the result object
for(var i in result) {
// make the outer collapsible
var outer = $("<div data-role='collapsible'/>");
// append the title for this type
outer.append("<h1>" + i + "</h1>");
// iterate the items for this type
for(var j in result[i]) (function(item){
// make the inner collapsible
var inner = $("<div data-role='collapsible'/>");
inner.append("<h2>" + item.name + "</h2>");
inner.append("<p>Quantity: " + item.quantity);
inner.append("<p>Barcode: " + item.barcode);
inner.append("<p>Detail: " + item.detail);
outer.append(inner);
})(result[i][j]);
list.append(outer);
}
/* For demo purposes only */
* { margin: 0 } [data-role="collapsible"] { border: 1px solid #666; margin: 5px; }
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<article data-role="content">
<div data-role="collapsible" data-collapsed="false" id="view-list">
</div>
</article>
关于javascript - 将数据加载到嵌套的可折叠集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33321644/
我想做一个系统,用户可以上传和下载文件。系统将具有一个集中的地形,但在很大程度上依赖于节点将相关数据通过中心节点传输给其他节点我不希望对等端保存整个文件,而是希望它们保存整个数据集的一个压缩的加密部分
我正在 Riverpod Auth 流程样板应用程序中工作。 我想对所有异步功能甚至登录和注销使用通用加载屏幕。目前,如果 Appstate 加载我显示加载屏幕,我有 AppState 提供程序。它可
我有一个 functions.php 文件,其中包括以下功能: function head() { global $brand, $brandName, $logo, $slogan, $si
我有下一个 html 代码 ... 我想选择随机的 div 数组来向它们添加一个事件类,因为我使用这个 jquery 代码 function randOrder() { return
多年来,我创建并调整了一组NAnt脚本以执行完整的项目构建。主脚本采用一个应用程序端点(例如,一个Web应用程序项目),并从源代码控制中对其进行完整的构建。脚本已预先配置了与构建输出位置,源代码控制地
我希望我的 jQuery 插件在 $(window) 选择上调用时表现不同。如何检查 window 是否在集合中?到目前为止我的尝试: >>> $(window) == $(window) false
考虑到我们有 let existingSet = $(); 如何通过 jQuery 将 newElements 添加到该集合中? existingSet = existingSet.add(newEl
我需要在 priority_queue 中保存一个整数集合。但是我需要能够删除这些整数中的一个,即使它不是我容器的第一个元素。我无法使用 std::priority_queue。我选择使用一个集合来根
对于我的网站,我一直在尝试集中所有内容以便在移动设备上显示: http://m.bachatdeals.com 我在移动设备上打开网站后,内容下方有很多空间,我必须捏住 zoon 才能阅读,如何删除下
我计划为我的剑道验证器制定一些自定义规则,并希望在所有验证器之间共享。在我的验证器代码中,我有: rules: { bothorblank: function (input) {
这是我的函数,用于测试两个点 x 和 y 在 MAX_ITERATION 255 之后是否在 mandelbrot 集合中。如果不在,它应该返回 0,如果在,则返回 1。 int isMandelbr
致力于从移动设备扩展到桌面设备的简单网站布局。一切都按预期工作,但由于某种原因,我的 float div 没有集中放置。我已经完成了正常工作,但这次不适合我?有什么想法吗? 这是我的 CSS: /*
我的“div”元素有一个相对宽度,它不是绝对的,所以我不能使用精确的数字来集中。一个不错的解决方案是使用“display: inline-block”: body { text-align:
目前我拥有的所有类都处理它们自己的导入。使用一个典型的例子: [ImportMany] private Lazy[] someOfMyInterfaces { get; set; } public M
我有一个类定义: class Question: title = "" answer = "" def __init__(self, title, answer):
我正在尝试将一个对象 Point2D 插入到一个 Point2D 集合中,但我做不到,似乎该集合适用于 int 和 char 但不适用于对象。 我需要帮助来了解如何将对象插入到集合中???假设我想按
我的应用上有一些弹出窗口,它是全屏的,代码如下: content.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
我们有一个多模块 Quarkus 项目,带有一个公共(public)库和多个应用程序。在通用的 lib 中,我们有各种缓存用于所有应用。 我们希望不必在每个应用程序的所有配置文件中配置保留和容量。 有
这个问题在这里已经有了答案: Nested facets in ggplot2 spanning groups (2 个回答) 去年关闭。 我在 ggplot 中创建了一个图表里面有两个变量 face
我无法集中v-radio-group。这是我得到的:
我是一名优秀的程序员,十分优秀!