$("<ol>").appendTo(some_div);
$.each(map, function(i,example){
$("<li>" + example + "</li>").appendTo(some_div)
});
$("</ol>").appendTo(some_div);
预期:
<ol><li>example1</li><li>example2</li></ol>
实际:
<ol></ol><li>example1</li><li>example2</li>
知道为什么会这样吗?
答案 0 :(得分:11)
您正在执行DOM操作而不是字符串操作。 $("<ol>")
已经创建了OL
元素,而不仅仅是包含<ol>
的字符串。
您需要将LI
元素附加到新创建的OL
元素:
var ol = $("<ol>").appendTo(some_div);
$.each(map, function(i,example){
$("<li>" + example + "</li>").appendTo(ol);
});
答案 1 :(得分:8)
您应该将<li>
条目附加到<ol>
。否则,您无法知道浏览器将如何处理您的代码。此外,您应该添加<ol></ol>
而不是单独的<ol>
和</ol>
。 jQuery的.append
和.appendTo
不是字符串操作,它们正在修改页面DOM树。
$("<ol></ol>").appendTo(some_div);
olelement = $(some_div).find("<ol>")
$.each(map, function(i,example){
$("<li>" + example + "</li>").appendTo(olelement);
});
答案 2 :(得分:2)
这一行
$("<ol>").appendTo(some_div);
不仅仅是按照您的想法添加开放标记。 jQuery正在构建一个有序列表元素并将其添加到some_div。同样,你的$ .each将列表项元素追加到some_div,因此它们最终成为列表的兄弟。您需要将列表项附加到列表元素。
答案 3 :(得分:0)
我相信$("<ol>").appendTo
会创建完整的<ol></ol>
标记。将li项附加到您创建的OL,或者创建一个长字符串,然后执行一个追加。追加是一项昂贵的操作,如果你有10个或更多的列表项你应该做后者。