0

我有一个标准的 HTML 格式的表格,它通过 Zend 框架动态生成内容。从中我遇到了在 PHP 端内部更改表单的问题。所以我需要以某种方式改变表格的外观。有一次,我有一个元素出现在其中一行中,当这个元素出现时,我想跳出表格,然后在它之后做一些事情,然后再次启动表格。

基本上我想注入的等价物

</tbody></table>/*other stuff*/<table><tbody>在包含我寻找的一个元素的行之后,在这种情况下是一个标签。

我尝试$("label[for='theLable']").parents('tr').after('</tbody></table><br><table><tbody>')了似乎忽略了结束表部分添加 br,然后在同一个表中为表和 tbody 做一个完整的打开/关闭标签我试图打破所以在 tr 标签之间基本上它添加了这个新表

处理这个概念的最佳方法是什么?

使用 jsfiddle 链接更新

http://jsfiddle.net/cPWDh/

4

2 回答 2

2

您不能真正按照您的想法修改文档的 HTML,因为这不是更改 DOM 的合法方式。

相反,我会创建一个新表和.append要移动到其中的行,这将自动将它们从当前位置移动(而不是复制它们):

$(document).ready(function() {
    var $trow = $('label[for="specialLabel"]').closest('tr'),
        $table = $trow.closest('table');
    $('<table>').append( $trow.nextAll().andSelf() ).insertAfter($table);
});​

http://jsfiddle.net/cPWDh/1/

于 2012-06-07T19:13:57.453 回答
0

这种方法在 js 中不起作用。如果表没有太多行,您可以这样做:

var nextTable = $("table").after("/*other stuff*/<table id="nextTable"></table>");
//now you loop over the lines of your original table that you want to have after the "break", and move them to the nextTable:

var before = true;
$("table tr").each(function(){
   if ($(this).has("[for='theLable']")) {
       before = false;
   }
   if (!before) {
       nextTable.append($(this));
   }
});
于 2012-06-07T19:14:03.860 回答