jQuery附加函数表现出异步

时间:2018-07-21 15:48:26

标签: jquery

我有这个代码

$("#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>之后开始

有人可以指出我的错误吗?

1 个答案:

答案 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