【问题标题】:Possible to append html before and after template?可以在模板之前和之后附加html吗?
【发布时间】:2011-06-24 08:52:51
【问题描述】:

是否可以在JQuery.tmpl 前后附加html?

我想插入一个嵌套表

<table id="accTable">
  <tr class="row" id="12345">
  </tr>
  <!-- New row to be inserted here -->
</table>

我已经完成了

var dat = [];
$.each(result, function(key, value){
    dat.push({
    FROM: this.date,
    ID: key,
    });
});

var markup = "<tr> <td>${ID}</td> <td>${FROM}</td> </tr>";

$.template("actTemplate", markup);

$('#'+id).tmpl("actTemplate", dat).after('#'+id);

但不知何故,我需要附加 &lt;tr&gt;&lt;td&gt;&lt;table&gt; 并预先添加 &lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;

我曾考虑将该 HTML 添加到现有的,但它应该发生在按下按钮时,所以在按下它之前它看起来会出错。所以我猜在插入模板时必须进行追加和前置...?

关于如何解决这个问题的任何建议?

更新

在此 jsFiffle 中,当单击“详细信息”时,将添加/删除一行。这是我要替换的行。

http://jsfiddle.net/littlesandra88/hhMM6/

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    你可以这样做:

    EDITED
    
    var wrapper = $( '<tr id="details"><td><table></table></td></tr>' );
    var wrapperTable = wrapper.find( 'table' );
    $.tmpl ("actTemplate", dat ).appendTo( wrapperTable  );
    
    wrapper.insertAfter( '#'+id );
    

    【讨论】:

    • 当我尝试将当前行附加到当前行中时。看起来很奇怪。我现在在问题中添加了一个 JSfiddle。你能看出有什么问题吗?
    • jsfiddle.net/CoolEsh/hhMM6/1 - 如果我正确理解您的任务,这就是解决方案。再更新一次:处理几个细节部分:jsfiddle.net/CoolEsh/hhMM6/2
    • 是的,完全正确 =) var wrapperTable = wrapper.find( 'table' ); 实际上是做什么的?你搜索的是哪个表?
    • wrapperTable 为您需要的内容创建标记:嵌套在 中的表格。接下来,我使用 jQuery 在创建的标记中实际找到该表(以避免为该表使用 ID 或 CLASS),然后通过模板将所有数据附加到该表。最后,我在给定 id 后包装所有创建的 DOM
    • 您不能这样做,因为目前可以打开一对“详细信息”,然后每个包装的表都将具有相同的 ID 属性。改用类。此外,您仍然需要使用 find(),因为当您在包装器中搜索表时,此代码此时未附加到 DOM,这就是您收到错误的原因。所以使用 var wrapper = $('
      ');和 var wrapperTable = wrapper.find('table.wrapped_table');在那一行之后
    【解决方案2】:

    我会这样解决:

    //create your wrapping elements
    var wrapping_elements = $('<tr><td><table class="new-table"/></td></tr>');
    $('#'+id).after(wrapping_elements);
    
    //insert your table data
    var template_data = $('#'+id).tmpl("actTemplate", dat);
    $('table.new-table').append(template_data);
    

    【讨论】:

    • 我无法让它工作。我也没有收到任何错误。我现在用我的实际代码添加了一个 jsFiffle。你能让它与你的解决方案一起工作吗?
    • 我已经更新了上面的代码,似乎我错误地实现了 after() 函数
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签