我有这个代码
$("#addr").append("<ul>");
$(data.customer).each( function() {
$("#addr").append("<li><div><b><i><u>
CUSTOMER ID </u></i></b>: "+this.custId+"<br>"+
"<b><u>customer Phone</u></b>"+this.custPhone+"<br>");
$("#addr").append("</div></li></br></br>");
});
$("#addr").append("<p>hiiielajekf</p></ul>");
但是在我的浏览器中,<ul>
为空,并且所有列表项都在<ul></ul>
之后开始
有人可以指出我的错误吗?
答案 0 :(得分:2)
您正在考虑标记,但这不是您要处理的内容。您正在处理对象树。 $("#addr").append("<ul>")
创建并附加一个ul
元素,它不只是 start 一个。同样,稍后在<li>...
中包含append
,而在另一个</li>
中包含append
的地方,这不是DOM(和jQuery)的工作方式。您传递给.append("<tag>")
的每个字符串都必须是完整的,格式正确的HTML代码段(带有平衡的开始和结束标签),但如果您仅执行.append("<tag></tag>")
,则jQuery会将其视为您做了data.customer
。
要么将整个内容构建为字符串,然后一次性全部添加,要么改为使用对象。
假设$("#addr").append(
"<ul>" +
data.customer.map(function(customer) {
return "<li>" +
"<div>" +
"<b><i><u> CUSTOMER ID </u></i></b>: " +
this.custId + "<br>" +
"<b><u>customer Phone</u></b>: " +
this.custPhone + "<br>"
"</div>" +
"</li>;
}) +
"</ul>"
);
$("#addr").append("<p>hiiielajekf</p></ul>");
是一个数组(由于某种原因,您需要坚持使用ES5级别的功能),则做一个大字符串:
li
或分别构建每个var ul = $("<ul>");
data.customer.forEach(function(customer) {
ul.append("<li>" +
"<div>" +
"<b><i><u> CUSTOMER ID </u></i></b>: " +
this.custId + "<br>" +
"<b><u>customer Phone</u></b>: " +
this.custPhone + "<br>"
"</div>" +
"</li>");
});
$("#addr").append(ul);
$("#addr").append("<p>hiiielajekf</p></ul>");
:
Map