当前位置: 首页 > 知识库问答 >
问题:

使用jquery UI Sortable,当没有行时,如何将行拖到表上?

班建义
2023-03-14

我将jquery UI sortable与两个表(使用connectlist)并排使用,效果非常好,除非其中一个表没有行,我无法将另一个表中的行拖到“空”表上,我想知道这是否受支持,或者我是否需要解决方法?

我有两张桌子相对排列(简化示例)

 <table id="table1" style="float:left;width:260px;">
       <thead><tr><th>Id</th><th>Name</th></tr></thead>
       <tbody class=sortable>

            <tr><td>1</td><td>Name 1</td></tr>
            <tr><td>2</td><td>Name 2</td></tr>
            <tr><td>3</td><td>Name 3</td></tr>

       </tbody>
  </table>

 <table id="table2" style="float:left;width:260px;">
       <thead><tr><th>Id</th><th>Name</th></tr></thead>
       <tbody class=sortable>

            <tr><td>1</td><td>Name 1</td></tr>
            <tr><td>2</td><td>Name 2</td></tr>
            <tr><td>3</td><td>Name 3</td></tr>

       </tbody>
  </table>

我有以下jQuery UI排序代码

        $(".sortable").sortable({
            connectWith: ".sortable",
            placeholder: "ui-state-highlight",
            helper: function(e, tr)
            {
                var $originals = tr.children();
                var $helper = tr.clone();
                $helper.children().each(function(index)
                {
                    // Set helper cell sizes to match the original sizes
                    $(this).width($originals.eq(index).width());
                });
                $helper.css("background-color", "rgb(223, 240, 249)");
                return $helper;
            }
        });
        $("#sortable").disableSelection();

这是我的CSS:

   <style type="text/css">
    .ui-state-highlight { height: 1.5em; line-height: 1.2em; }
    .ui-sortable-helper {
       transform: rotate(1deg);
       -moz-transform: rotate(1deg);
       -webkit-transform: rotate(1deg);
    }
  </style>

如果其中一个表碰巧没有行,我将无法再将行拖到该表上。当我在firebug中查看时,我仍然可以看到TBODY,即使没有行,所以我不确定出了什么问题?

正如安东所指出的,这似乎可以在Chrome但不是任何其他浏览器(我也需要在其他浏览器中工作)

我使用display:block使它工作(并且必须更新我的表格的一些样式)。我现在唯一的问题是,悬停时,这些空表上的突出显示行不是全宽的(我猜是因为display:block)。这里是一个屏幕截图,您可以看到黄色的可排序悬停不是整行。这不是一个拦截器,但如果在有行时使用它,它看起来会更好。

共有1个答案

鞠隐水
2023-03-14

我找到了一个适用于firefox和IE的解决方案

        <tr><td></td><td></td></tr>
        <tr><td>1</td><td>Name 1</td></tr>
        <tr><td>2</td><td>Name 2</td></tr>
        <tr><td>3</td><td>Name 3</td></tr>

创建一个空的

演示

最新消息

又找到了一个解决办法

tbody{
    display:block;
    min-height:10px; 
}

然后您必须将其添加到排序表中:

            start: function(e, ui ){
                ui.placeholder.height(ui.helper.outerHeight()-10);
                ui.placeholder.find("td").css("width", ui.helper.width());
            },

但这会让桌子看起来不一样

演示

如果tbody不包含任何类似的元素,则可以添加类

  stop: function (e, t) {
           if ($(this).children().length == 0) {
               $(this).addClass('test');
           } 
           if($(t.item).closest('tbody').children().length >0){
                  $(t.item).closest('tbody').removeClass('test');
           }
       },

演示

 类似资料:
  • 我有多个spring启动应用程序实现与Kafka经纪人的spring cloud stream。我想知道我是否可以停止或禁用spring cloud stream或kafka broker连接来启动应用程序。

  • 无法在 AnjularJS 应用程序中看到拖动的元素,即使执行了拖放操作且没有任何错误。 代码如下: 以下是执行和执行的不同方法,没有错误: 还执行了JavaScript方法:但是没有运气,它也执行没有错误,但无法执行拖放操作在UIenter图像描述在这里 上述所有方法和命令都是编译和执行的,没有任何错误,但无法在UI中执行拖放操作(请帮助)。 尝试了所有可能的组合,我知道任何人都可以让我知道我错

  • 问题内容: 我有一个PDO功能: 当我执行选择查询以返回一行(或更多)时,它将返回例如: 当查询失败时(例如,如果我使用错误的语法),它将返回FALSE。 但是,如果在查询中未找到任何行,则它还会返回FALSE。 因此,查询中有错误且没有行的返回值都将返回FALSE。那怎么可能?仅当查询中有错误时,我才需要返回FALSE,例如,当没有结果时,我就需要返回NULL。我的功能有问题吗? 谢谢! 问题答

  • 问题内容: 我希望做一个绑定 数据表 来 的ReportViewer 与下面的代码。我没有看到结果出现在 reportviewer中 ,下面缺少什么脚本? 问题答案: 我找到了如何将数据表绑定到reportviewer的答案,我将在这里分享可能对其他人有用。 加入形成 clsTables类 , Report1.rdlc文件 , reportViewer1 。 然后点击的右上角 reportView

  • 如果我从终端uvicorn main:app运行--重新加载一切工作。 当把它放在my_script.sh文件中时 然后什么都没发生。为什么? 我发现了这个:Uvicorn/FastAPI可执行文件,但似乎没有答案。

  • 问题内容: 如果用户键入的长行中没有空格或空白,则会超出当前元素的宽度,从而破坏格式。就像是: 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈… ................................................... ................................................... 我已经尝试过仅在PHP中使用,但是问题在于,如果