假设我有以下对象:
var results = {
itinerary:"01",
seats:[
{
rows:[
{
"seatNUmber": "A",
"IsAvailable": true
},
{
"seatNUmber": "B",
"IsAvailable": true
},
{
"seatNUmber": "C",
"IsAvailable": false
},
{
"seatNUmber": "D",
"IsAvailable": true
}
]
},
{
rows:[
{
"seatNUmber": "A",
"IsAvailable": true
},
{
"seatNUmber": "B",
"IsAvailable": true
},
{
"seatNUmber": "C",
"IsAvailable": false
},
{
"seatNUmber": "D",
"IsAvailable": true
}
]
}
]
}
所以我想知道的是如何将这个对象解析成一个表或一个列表,但用jQuery动态创建组件?
类似于使用 AngularJS 进行解析,ng-repeat
但在本例中使用 jQuery。
您可以使用 jQuery 读取对象并生成 HTML。例如:
在这里,我提出了一个尽可能忠实于 AngularJS 中使用的结构的解决方案(并非总是 100% 可能)。
想法如下:
使用 HTML5 属性
data-*
来识别某些元素:data-init
。该值将是包含数据的变量的名称。data-repeat
。该值将是包含要显示的数据的数组的名称。data-value
。该值将是对象内属性的名称。查找具有属性的元素
data-init
。data-repeat
。data-repeat
以避免数据中的噪声(例如表中的空行)。data-value
指定的对象内的值data-init
。因此,您可以创建简单的 HTML 模板,以问题中的案例为例,看起来像这样:
并将其与此(已注释掉的)jQuery 代码结合以呈现该模板:
这是上面代码和问题数据的示例:
此解决方案的优点:
x in items
,但它需要更多代码)。这种解决方案的缺点:
eval()
:如果使用不当,可能会产生 XSS 和脚本注入问题(例如:如果正在处理的数据包含恶意代码)。用户问以下问题:如何将此对象解析为表格或列表,但使用 jQuery 动态创建组件?
假设用户想从
IsAvailable
表中每个的值中查看哪些项目是可用的。我们可以做到以下几点:1-指明要显示的行程的标题。
2-遍历每一行
seats
。3-在每一行中为每个人打印一个单元格,并显示它们的可用性
IsAvailable
。这是代码,演示了上面解释的内容: