javascript - jQuery UI Sortable 工作异常

标签 javascript jquery html css jquery-ui

我正在尝试 jQuery UI Sortable .

我有 3 个 Div,它们一开始是不可见的,但如果单击按钮就会变得可见。然后,Divs 需要是可排序的。

它以某种方式工作,但是当我将一个 Div 拖到另一个 Div 上时,它不会为它“腾出位置”。因此下面的 Div 必须移开并为新的 Div 留出“空隙”。
奇怪的是,它只有在我删除定义它的 CSS 时才起作用,那些 Div 一开始是不可见的。

这是我的:

<style>
.myClass {
    display: none;
}
</style>
<script>
$(document).ready(function(){
    $('.content2').append("<div class='myClass' id='ro_1'>Div 1<div>");
    $('.content2').append("<div class='myClass' id='ro_2'>Div 2<div>");
    $('.content2').append("<div class='myClass' id='ro_3'>Div 3<div>");

    $( "button" ).click(function() {
        makeVisible();
    });

    $(function() {
        $( ".content2" ).sortable({
            connectWith: ".content2"
        }).disableSelection();
    });

    function makeVisible(){
        $('.myClass').css('display', 'block');
    }
});
</script>
<div class="content1"></div>
<div class="content2"></div>
<button>Visible</button>

fiddle :https://jsfiddle.net/kka1z1k7/5/


这是预期的行为(删除了 CSS):

https://jsfiddle.net/kka1z1k7/2/

编辑: 我用 Chrome 和 Firefox 检查了一下

最佳答案

问题是,占位符也将具有 myClass 类,因此根据您现有的 CSS 将不可见。您可以通过更新选择器以排除可排序助手来解决此问题:

.myClass:not(.ui-sortable-placeholder) {
  display: none;
}
.ui-sortable-placeholder{
  visibility:visible !important;
  border:1px solid black; /*for demo*/
}

默认情况下,jQuery UI 将助手可见性设置为 visibility:hidden,使其看起来像一个空白空间。如果你真的想看到它,你也应该覆盖它。

Demo

关于javascript - jQuery UI Sortable 工作异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35455364/

相关文章:

javascript - Onchange 选择选项

javascript - 如何创建无限改变不同背景颜色的循环动画

javascript - .ready() 在 window.beforeunload 之后触发

javascript - 将插入符号放在 ContentEditable 中插入的标记之外

javascript - 密码正则表达式

javascript - 在 javascript 文件中为 HTML 页面导入脚本 src 标签

javascript - GWT 客户端 - 未捕获的类型错误 : Cannot read property 'clear_31_g$' of undefined

asp.net - 使用 jQuery 将 JSON 对象成功发送到 ASP.NET WebMethod

html - 添加自动幻灯片已创建水平滚动?

javascript - 在 R 中向 Quarto HTML 文档添加串扰以加载 map