jquery - 为什么添加 "helper: "clone";"到这个 ui-draggable 元素会阻止它被拖动?

标签 jquery html jquery-ui draggable pseudo-element

我想要的只是拥有一个<ul>其子项上方出现一个框阴影 <li>元素,并且这些元素可以在 <ul> 内排序.

这是一个jsfiddle ,这是代码:

HTML:

<ul class="shadowed">
    <div class="dragMe"></div>
</ul>

CSS:

.shadowed {
    width: 256px;
    height: 64px;
    margin: 100px;
    background: #777;
}

.shadowed:before { 
    content: "";
    width: 256px; 
    height: 64px;
    position: absolute;
    margin: 100px;
    top: 0; 
    left: 0;
    box-shadow: inset 0px 0px 10px 2px #000;
}

.dragMe {
    width: 64px;
    height: 64px;
    background: red;
}

JavaScript:

$(function() {
    $( ".dragMe" ).draggable({

        /* try dragging the red square, then remove this line and try again. */
        helper: "clone",


        revert: "invalid",
        stack: ".dragMe"
    });

    $( ".shadowed" ).droppable().sortable().disableSelection();   
});

在此示例中,我有一个 <ul>带着 child <li> (红色框)。 <ul> “具有”伪元素形式的盒子阴影,使阴影出现在子元素上。

红色框(在通过 jQuery-UI 可拖动之前)按预期显示在阴影下方。但是,在使该元素可拖动后,它会出现在阴影上方。在此状态下拖动红色框可以正常工作。

为什么使元素可拖动并将其放置在阴影前面?

另外,给红框一个helper: "clone"将其放回阴影下方,但防止其被拖动。

有什么想法可以解决这个问题吗?

最佳答案

因此,元素顶部的框阴影覆盖使得下面的 div 不可点击。

我更新了 jsfidle 示例,通过添加另一个 div 并制作另一个 mod 来清楚地说明这一点

 <div class="dragMe"> </div> 

http://jsfiddle.net/rrETm/4/

解决这个问题的一个可能的方法是拦截点击,隐藏框阴影覆盖然后模拟点击,然后重新显示框阴影,但这似乎有点复杂。下面的链接示例中提供了一些开始使用此方法的代码。

Jquery pass click through element

关于jquery - 为什么添加 "helper: "clone";"到这个 ui-draggable 元素会阻止它被拖动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467050/

相关文章:

javascript - 如果是最后一个节点,如何显示子菜单的XML子菜单并显示图像

jquery - 如何提醒 jQuery 选择器中单引号之间输入的内容?

javascript - JQuery serializeArray 提供一个名为 query 的附加值

jquery - 悬停行时显示/隐藏行中的元素

html - 如何删除css上的空格

javascript - jQuery-UI 日期选择器的默认日期范围

javascript - jQuery 代替 Flash 动画

jquery - 使用 JQuery 验证时有效地插入一个 Div

jquery - 如何让 li 项目落在鼠标指针处

ruby-on-rails - Rails 中的 jQuery ajax 调用?