有没有办法只使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 );
}
答案 0 :(得分:5)
修正了@ http://jsfiddle.net/uD5rG/1/
我添加了draggabilly的句柄选项,如下所示
// make element draggable with Draggabilly
var draggie = new Draggabilly( elem , {
handle: '.handle'
});
答案 1 :(得分:0)
使用绑定到jquery UI Draggable。使用jquery UI属性句柄,它对我来说很好。 http://packery.metafizzy.co/draggable.html#jquery-ui-draggable
您在jsfiddle上发布的解决方案对我不起作用。
答案 2 :(得分: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/
答案 3 :(得分:0)
使用jquery:
var draggie = $grid.find('.grid-item').draggable({
handle: '.ui-sortable-handle'
});
$grid.packery('bindUIDraggableEvents', draggie);