代码之家  ›  专栏  ›  技术社区  ›  spacemonkeys

带有事件的jQuery生成表

  •  0
  • spacemonkeys  · 技术社区  · 15 年前

    我刚开始玩jQuery,想把ajax调用的结果放到表中。。。我已经编写了以下函数(用于测试而不是实际的)

     function AjaxSucceeded(result) {
               $("#pageLabel").html('');
               $("#pageLabel").append($("<table>").attr("id", "outputTable").append($('<tbody>')));
    
               $.each(result.d, function(i, item) {
                   $("#outputTable").find('tbody')
                        .append($('<tr>')
                        .attr('onclick', "clientSideInclude('pageLabel','http://wwww.microsoft.com');")
               .append($('<td>')
               .attr('colspan', "2")
               .text(item.Description)
               )
               );
    
               });
               //** Clean up before we leave
               $('#loadDiv').removeClass('Loading').addClass('notLoading');
           };
    

    产生以下输出

    <tbody><tr onclick="clientSideInclude('pageLabel','http://wwww.microsoft.com')"><td colspan="2">Test Page                                                                                           </td></tr><tr onclick="clientSideInclude('pageLabel','http://wwww.microsoft.com')"><td colspan="2">Test Page 2                                                                                         </td></tr></tbody>
    

    2 回复  |  直到 15 年前
        1
  •  1
  •   andres descalzo    15 年前

    试试这个:

    function AjaxSucceeded(result) {
    
      $("#pageLabel").empty();
    
      var table = $('<table id="outputTable"><tbody></tbody></table>'),
          reftBody = $(table).find('tbody');
    
      $.each(result.d, function(i, item) {
    
          var 
              // td
              td = $('<td>')
                     .attr('colspan', "2")
                     .text(item.Description),
              // tr
              tr = $('<tr>')
                     .bind('click', {pageLabel: 'pageLabel', link: 'http://wwww.microsoft.com'}, function(event) {
    
                        clientSideInclude(event.data.pageLabel, event.data.link);
    
                     })
                     .append(td);     
          // append tr
          $(reftBody).append(tr);
    
       });
    
       // append table with tbody
       $("#pageLabel").append(table);
    
       //** Clean up before we leave
       $('#loadDiv').removeClass('Loading').addClass('notLoading');
    };
    
        2
  •  0
  •   Diodeus - James MacFarlane    15 年前

    试试这个:

    .append($('<tr onclick="...">')
    

    同时,将HTML构建为一个字符串并同时插入整个内容也要高效得多。它大大减少了浏览器需要执行的重绘次数。