JSON编码一个HTML列表——所有子项都显示在所有父项上
JSON encode a HTML list - all childs are showed at all parents
我有这个排序列表:
function convert( name_ref ) {
name_ref = name_ref + " > ol > li";
var mylist = [];
$(name_ref).each(function () {
if ($(this).find('> ol > li').length){
mylist.push({
"name": $(this).children("span").text(),
"childs": convert( name_ref )
});
} else {
mylist.push({
"name": $(this).children("span").text()
});
}
});
return mylist;
}
function convert_final( the_list ) {
$("#result").html(JSON.stringify(the_list));
}
convert_final( convert('.ols') );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ols">
<ol>
<li><span>Something</span>
<ol><li><span>Something 1</span></li></ol>
</li>
<li><span>Something 2</span></li>
<li><span>Something 3</span>
<ol><li><span>Something 4</span></li></ol>
</li>
</ol>
</div>
<div id="result"></div>
上面的列表有子列表,就像有子菜单的菜单一样。我想用json对html列表进行编码(将列表转换为json),但json结果是错误的,因为"Something 3"的子项可以在json中的"Someting"的子级找到,反之亦然。
我该怎么做才能在json中向olny显示"li"的真正子级。
希望你能理解我的问题,非常感谢!
在对convert
的递归调用中,name_ref
变为:
.ols > ol > li > ol > li
这会拾取所有嵌套两层深的li
子级。
另一种选择是在jQuery集合本身上调用convert
:
function convert(name_ref) {
var mylist = [];
$(name_ref).each(function () {
var li= $(this).find('> ol > li');
if(li.length) {
mylist.push({
'name': $(this).children('span').text(),
'childs': convert(li)
});
}
else {
mylist.push({
'name': $(this).children('span').text()
});
}
});
return mylist;
}
function convert_final( the_list ) {
$('#result').html(JSON.stringify(the_list));
}
convert_final(convert($('.ols > ol > li')));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="ols">
<ol>
<li><span>Something</span>
<ol><li><span>Something 1</span></li></ol>
</li>
<li><span>Something 2</span></li>
<li><span>Something 3</span>
<ol><li><span>Something 4</span></li></ol>
</li>
</ol>
</div>
<div id="result"></div>
Maybe this can be of use, not tailored to your problem but same principle
http://jsfiddle.net/fkling/X8J7J/
相关文章:
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 编码url并显示在iframe中
- JSON编码一个HTML列表——所有子项都显示在所有父项上
- 显示编码的PNG
- 只有当类是硬编码的时,才可以使用jQuery来显示/隐藏html内容
- 在一个模式AjAX编码器中显示不同的Gallery
- ExtJs组合框显示字段编码
- 为什么我的地理编码无法显示地址
- 一个简单的刽子手游戏的逻辑,以显示编码的单词
- 如何使用Javascript对链接+显示消息进行编码
- 如何编码突出显示的开放时间
- 如何对此 javascript 函数进行编码以在选择特定类型时显示两个 + 字段集
- 使用编码器点火器保存数据后显示通知
- jquery显示php-json编码数组的值时出现未定义错误
- 使用encodeURI()时,在回发之前显示编码的文本
- Ruby Base64编码的图片不显示
- JavaScript编码字段,而不会破坏显示
- 如何基于此编码显示隐藏
- 为什么不是'我的谷歌地图API反向地理编码显示结果
- 在博客网站上用Javascript的数组编码显示图片