【问题标题】:build html table with jQuery xml response使用 jQuery xml 响应构建 html 表
【发布时间】:2010-12-25 22:23:46
【问题描述】:

我正在尝试遍历来自 jQuery Ajax 请求的响应(以 XML 形式返回)。

根据该响应,我正在构建一个包含 3 列(行数不受限制)的 HTML 表格。一旦找到第 4 个 XML 节点/“公司”,它应该在表中开始一个新行。 非常感谢 JS 确定何时应添加新行的任何帮助。谢谢!

JS 示例:

/* jQuery Ajax Call here */

success: function(xml){  
    var trow = $("<tr>");  
    $(xml).find("Company").each(function(index){  
    var cellData = "<td width=\"33%\" valign=\"top\" ><div class=\"container\">"+
"<div class=\"item\"><a href=\"#\" title=\"\" target=\"\">"+ $(this).attr("Name")+ "</a></div>"+  
"<div class=\"description\">"+ $(this).attr("Description") + "</div></div></div></td>";  
    $(cellData).appendTo(trow);   
      });  
      trow.appendTo('#tbl');  
    }  
  });  

});

来自 Web 服务的示例 XML 响应:

<Companies>
    <Company ID="6" Name="Company name 1" Description="Lorem ipsum" />
    <Company ID="22" Name="Company name 2" Description="Lorem ipsum" />
    <Company ID="28" Name="Company name 3" Description="Lorem ipsum" />
    <Company ID="31" Name="Company name 4" Description="Lorem ipsum" />
</Companies>

【问题讨论】:

    标签: javascript jquery xml soap each


    【解决方案1】:

    模运算符非常适合这样的事情。基本上它将一个数字除以另一个数字并返回余数。所以1 % 4 = 14 % 4 = 08 % 4 = 0

    success: function(xml){
        var trow = $("<tr>"), table = $("#tbl");  
        $(xml).find("Company").each(function(index){  
            var cellData =  "<td width=\"33%\" valign=\"top\" ><div class=\"container\">"+
                            "<div class=\"item\"><a href=\"#\" title=\"\" target=\"\">"+ 
                            $(this).attr("Name")+ "</a></div>" +  
                            "<div class=\"description\">" + $(this).attr("Description") + 
                            "</div></div></div></td>";
            $(cellData).appendTo(trow);   
            if( (index + 1) % 4 == 0) {
                trow.appendTo(table);
                trow = $("<tr>");
            }
    
          });  
          if(trow.is(':not(:empty)')) trow.appendTo(table);  
        }  
        });
    });
    

    我还将$("#tbl") 存储在一个变量中以减少查找次数。

    【讨论】:

    • 非常感谢您的及时回复!啊,模运算符的出色使用。我已经总结了这个解决方案好几个小时了。我唯一调整的是“4==0”到“3==0”,以强制第 4 个结果开始一个新的表格行。再次感谢您的帮助!
    • 乐于助人!很高兴您发现 4 == 0 应该是 3。
    猜你喜欢
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多