0

布局:具有“展开”按钮的行的表格。展开按钮显示该行的所有子行,所有这些子行都与父行共享一些公共数据。

目标:在父母之间拖拽孩子;即将数据的某个子集移动到另一个集合,并根据新父级的数据自动编辑某些字段。

到目前为止,我有一张带有扩展子行的表格,但我无法理解如何让孩子们可以在父母之间拖动。我也不希望能够重新排序父行,它们应该是静态的。该表是动态创建的,数据是从数据库中获取的。

桌子:

    <table id="loot-table" class="table table-striped">
                    <thead>
                    <tr>
                        <th>Min Level Required</th>
                        <th>Min Tokens Required</th>
                        <th>Type of Loot Dropped</th>
                        <th>Loot Group</th>
                        <th>Name of Loot Dropped</th>
                        <th>Quantity of Loot Dropped</th>
                        <th>Weight of Loot Dropped</th>
                        <th>Loot Is Available:</th>
                    </tr>
                    </thead>
                    <tbody>
                    <?php $loot_group_count=-1; foreach($event['lockbox_loot'] as $lockbox_loot){ $loot_group_count++; ?>
                        <tr class="loot-header-row">
                            <td><input type="number" value="<?php echo $lockbox_loot['min_level_required']; ?>"></td>
                            <td><input type="number" value="<?php echo $lockbox_loot['min_tokens_required']; ?>"></td>
                            <td><input name="loot_group_id[<?php echo $loot_group_count; ?>]" type="text" value="<?php echo $lockbox_loot['loot_group_id']; ?>"></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td></td>
                            <td><a href="#" class="loot-table-expand-btn" data-group-id="<?php echo $loot_group_count; ?>">Expand</a></td>
                        </tr>
                        <?php if($loot){ $i=-1; foreach($loot as $lootitem){
                            if($lockbox_loot['loot_group_id'] === $lootitem['loot_group_id']){ $i++; ?>
                            <tr class="loot-row-<?php echo $loot_group_count; ?> hide">
                                <td></td>
                                <td></td>
                                <td><input name="item_loot_group_id[<?php echo $loot_group_count; ?>][<?php echo $i; ?>]" type="text" value="<?php echo $lootitem['loot_group_id']; ?>" disabled="disabled"></td>
                                <td>
                                    <select name="loot-type[<?php echo $i; ?>]">
                                        <option value="money" <?php if($lootitem['loot_type']==="money"){echo "selected";}; ?>>Money</option>
                                        <option value="respect" <?php if($lootitem['loot_type']==="respect"){echo "selected";}; ?>>Respect</option>
                                        <option value="item" <?php if($lootitem['loot_type']==="item"){echo "selected";}; ?>>Item</option>
                                        <option value="mafia" <?php if($lootitem['loot_type']==="mafia"){echo "selected";}; ?>>Mafia</option>
                                    </select>
                                </td>
                                <td><input name="loot_id[<?php echo $i; ?>]" type="text" value="<?php echo $lootitem['loot_id']; ?>"></td>
                                <td><input name="quantity[<?php echo $i; ?>]" type="number" min="0" value="<?php echo $lootitem['quantity']; ?>"></td>
                                <td><input name="loot_weight[<?php echo $i; ?>]" type="number" min="0" value="<?php echo $lootitem['loot_weight']; ?>"></td>
                                <td><input name="is_available[<?php echo $i; ?>]" type="checkbox" value="<?php echo $lootitem['is_available']; ?>" <?php if($lootitem['is_available']){echo "checked";}; ?>></td>
                            </tr>
                    <?php }}}} ?>
                    </tbody>
                </table>

用于扩展隐藏单元格的 JQuery 代码:

    $(".loot-table-expand-btn").each(function() {
        $(this).on('click', function(){
            var group_id = $(this).attr('data-group-id');
            $('.loot-row-' + group_id).each(function(){
               if($(this).is(":visible")) {
                   hidden = true;
                   $(this).hide();
               } else {
                   hidden = false;
                   $(this).show();
               }
            });
            if(hidden) {
                $(this).html('Expand');
            } else {
                $(this).html('Collapse');
            }
            return false;
        });
    });
4

1 回答 1

0

jQuery UI - Sortable 有一个关于如何在父母之间共享可拖动孩子的演示。至于将排序限制为某些行,或者<td>您可以使用相同的 API 并使用“项目”选项仅选择您想要/需要的元素,例如

items: "td[class='mark']"

只允许您对具有该类的项目进行排序。

于 2012-08-22T22:09:08.927 回答