0

有没有办法只使 Packery/Draggabilly 容器的一部分可拖动?比如说,只使下面示例中的 .chartHeader 可拖动 - 但让整个 .chartContainer 整体移动?目前,只有 .chartHeader 是可拖动的,其他所有内容都留在后面。我想让一切都像一个幸福的大家庭一样立即行动起来。

这是一个小提琴:http: //jsfiddle.net/uD5rG/

提前致谢!

    <div class="chartContainer">
        <div class="chartHeader">HEADER</div>
        <div class="chartContent">CONTENT</div>
    </div>

这是我的 packery/draggabilly 配置:

        var container = document.querySelector("#packeryContainer");
        var pckry = new Packery( container, {
            itemSelector: '.chartContainer',
            columnWidth: 350,
            rowHeight: 255,
            gutter: 15
        });

        // make packery items draggable
        var itemElems = pckry.getItemElements();
        // for each item...
        for ( var i=0, len = itemElems.length; i < len; i++ ) {
            var elem = itemElems[i];

            // get the .chartHeader element
            var headerElem = elem.querySelector(".chartHeader");

            // make element draggable with Draggabilly
            var draggie = new Draggabilly( headerElem );

            // bind Draggabilly events to Packery
            pckry.bindDraggabillyEvents( draggie );
        }
4

4 回答 4

5

固定@http://jsfiddle.net/uD5rG/1/

我添加了 Draggabilly 的句柄选项,如下所示

            // make element draggable with Draggabilly
            var draggie = new Draggabilly( elem , {
                handle: '.handle'
            });
于 2013-12-11T21:06:53.887 回答
0

使用绑定到 jquery UI Draggable。使用 jquery UI 属性句柄对我来说效果很好。 http://packery.metafizzy.co/draggable.html#jquery-ui-draggable

您在 jsfiddle 上发布的解决方案对我不起作用。

于 2014-06-05T08:38:19.700 回答
0

只需使用像 Cole 提到的手柄选项。

$(function () {
    var $container = $('.packery');

    $container.packery({
        columnWidth: 80,
        rowHeight: 82 /* +2 for the bottom margin on .item */
    });

    // bind draggabilly events to item elements
    $container.find('.item').each(makeEachDraggable);

    function makeEachDraggable(i, itemElem) {
        // make element draggable with Draggabilly
        var draggie = new Draggabilly(itemElem, {
            handle: '.header'
        });
        // bind Draggabilly events to Packery
        $container.packery('bindDraggabillyEvents', draggie);
    }


});

这是一个简单的小提琴:http: //jsfiddle.net/ex5TJ/

另外,请查看此链接以获取更多详细信息: http: //draggabilly.desandro.com/

于 2014-07-18T01:36:12.627 回答
0

使用jQuery:

var draggie = $grid.find('.grid-item').draggable({
            handle: '.ui-sortable-handle'
        });
        $grid.packery('bindUIDraggableEvents', draggie);
于 2019-10-09T20:46:37.983 回答