用Div内容创建obj
Create obj out of Div contents
我有以下HTML结构:
<div id="main">
<div id="myDiv1">
<ul>
<li>Abc</li>
<li>Def</li>
</ul>
</div>
<div id="myDiv2">
<ul>
<li>Ghi</li>
<li>Jkl</li>
</ul>
</div>
</div>
我现在想提取一些信息,并将它们放入这样的对象中:
var ob = {
'myDiv1' : [ "Abc", "Def"],
'myDiv2' : [ "Ghi", "Jkl"]
};
我的方法很不方便:
var obj = "{";
$('#main div').each(function() {
obj += "'"" + $(this).attr('id') + "'" : [";
$(this).find('li').each(function() {
obj += "'"" + $(this).text() + "'", ";
});
obj = obj.substring(0, obj.length - 2);
obj += "], ";
});
obj = obj.substring(0, obj.length - 2);
obj += "}";
obj = JSON.parse(obj);
console.log(obj)
结果我得到了一个数组,但不是我需要的结构。
有没有更好的方法来创建结构?
稍后,我想在Ajax调用中传递obj
作为参数。
Fiddle。
只需直接创建一个对象,就可以使代码更加简单。您可以在#main
中的div
元素上循环,然后使用map()
创建子div
包含的li
文本值的数组。试试这个:
var obj = {};
$('#main div').each(function() {
obj[this.id] = $(this).find('li').map(function() {
return $(this).text();
}).get()
});
console.log(JSON.stringify(obj)); // = "{"myDiv1":["Abc","Def"],"myDiv2":["Ghi","Jkl"]}"
工作示例
稍后,我想在Ajax调用中传递obj作为参数。
还需要注意的是,您不需要以JSON格式传递对象即可实现这一点——您可以直接向AJAX请求的data
参数提供一个对象,jQuery将自动为您对其进行编码和字符串化。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 为effect Composer创建GodRays效果过程
- 从javascript创建一个列表
- onkeyup无法动态创建多个文本区域
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何访问声音管理器2创建的声音对象
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 使用Facebook live API创建实时视频对象时的隐私设置
- 用Div内容创建obj
- 创建自定义.OBJ/.MTL文件,并使用three.js进行渲染
- 创建JSON obj并通过jQuery AJAX将其发送到PHP并响应它
- 使用 geometry.vertices 和 geometry.faces 从 .obj 文件创建网格
- 如何在 javascript 中动态创建 obj 属性
- 从字符串创建深层对象,如“obj.obj1.obj2.data”
- 在 Angular 项目中迭代 JSON 响应以创建新的 $scope obj 我可以在应用程序中使用的
- 创建绑定生成的obj的新实例
- jquery.Extend (true, [], obj)不创建深度拷贝
- 不能用Face3从.obj重新创建Quad
- 如何检查一个 Javascript 类是否继承了另一个(不创建 obj)