3

我有一张桌子:

<div id="menu">
    <table cellspacing="0" cellpadding="0" width="930">
        <tbody>
            <tr>
                <td>
                    1
                </td>
                <td class="spacer"></td>
                <td>
                    2
                </td>
                <td class="spacer"></td>
                <td>
                    3
                </td>
                <td class="spacer"></td>
                <td>
                    4
                </td>
                <td class="spacer"></td>
                <td>
                    6
                </td>
                <td class="spacer"></td>
                <td>
                    5
                </td>
            </tr>
        </tbody>
    </table>
</div>

我需要把这张桌子分成两张桌子。
像这样:

<div id="menu">
    <table cellspacing="0" cellpadding="0" width="930">
        <tbody>
            <tr>
                <td>
                    1
                </td>
                <td class="spacer"></td>
                <td>
                    2
                </td>
                <td class="spacer"></td>
                <td>
                    3
                </td>
            </tr>
        </tbody>
    </table>
    <table>
        <tbody>
            <tr>
                <td>
                    4
                </td>
                <td class="spacer"></td>
                <td>
                    6
                </td>
                <td class="spacer"></td>
                <td>
                    5
                </td>
            </tr>
        </tbody>
    </table>
</div>

所以我这样做了:
它找到中间间隔并用一些结束标签和开始标签替换它。

var menuItems = jQuery('#menu table tr td.spacer').size();
var middle = Math.floor(menuItems/2);
jQuery('#menu table tr').children('td.spacer').each(function(index) {
    if(index == middle) {
        jQuery(this).replaceWith('</tr></tbody></table><table><tbody><tr>');
    }
});

但是 jQuery 似乎不喜欢那样……有可能做到这一点吗?拆分元素?

4

4 回答 4

4

试试这个:

$('<table id="sec" cellspacing="0" cellpadding="0" width="930"><tbody><tr></tr></tbody></table>').insertAfter('table');

var s = $('#menu td').size() / 2;

$('#menu td').each(function(){
    if($(this).index() > s) {
      $(this).clone(true).appendTo("#sec tr");
      $(this).remove()
    }
})    

http://jsfiddle.net/39pLc/4/

于 2012-05-11T10:01:23.617 回答
2
replaceWith doesn't change a part of html element.

它应该可以正常工作。

<html>
<head>
<script src="../ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<div id="menu">
    <table cellspacing="0" cellpadding="0" width="930">
        <tbody>
            <tr>
                <td>
                    1
                </td>
                <td class="spacer"></td>
                <td>
                    2
                </td>
                <td class="spacer"></td>
                <td>
                    3
                </td>
                <td class="spacer"></td>
                <td>
                    4
                </td>
                <td class="spacer"></td>
                <td>
                    6
                </td>
                <td class="spacer"></td>
                <td>
                    5
                </td>
            </tr>
        </tbody>
    </table>
</div>
<script>
var tableCells = $('#menu td');
var middleIdx = tableCells.size() / 2;
var currTable = $('#menu table');   
var secTable = $("<table/>").attr({cellSpacing:currTable.attr("cellSpacing"), cellPadding:currTable.attr("cellPadding"), width:currTable.attr("width")})
tableCells.each(function(index){
    if(index == middleIdx){
        $(this).remove();
    }else if($(this).index() > middleIdx) {
      $(this).clone(true).appendTo(secTable);
      $(this).remove()
    }
})     
$("#menu").append(secTable);
</script>
</body>
</html>
于 2012-05-11T10:18:26.373 回答
0
var menuItems = $('#menu table tr td.spacer').size();
var middle = Math.floor(menuItems/2);
var newTr =$('<tr/>');
$('#menu table').after($('<table cellspacing="0" cellpadding="0" width="930"></table>').append(newTr));
$('#menu table tr td.spacer').eq(middle).nextAll().appendTo(newTr);
$('#menu table tr td.spacer').eq(middle).remove();

​演示

于 2012-05-11T10:08:50.663 回答
0

检查它:http ://webworkbyandrea.com/jquery_play/splitTable/split_table_into_four_tables.htm

于 2012-05-11T10:16:04.560 回答