有没有办法只让包装工/可拖动集装箱的一部分可拖动?比方说,只让下面例子中的.chatHeader可拖动,但让整个.chatContainer作为一个整体移动?目前,只有.chatHeader是可拖动的,其他所有内容都保留在后面。我希望所有的事情都能像一个幸福的大家庭一样同时发生。
这是一把小提琴:http://jsfiddle.net/uD5rG/
提前感谢!
<div class="chartContainer">
<div class="chartHeader">HEADER</div>
<div class="chartContent">CONTENT</div>
</div>
这是我的包装/拖拉配置:
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 );
}
已修复@http://jsfiddle.net/uD5rG/1/
我添加了draggabilly的手柄选项,如下所示
// make element draggable with Draggabilly
var draggie = new Draggabilly( elem , {
handle: '.handle'
});
使用绑定到jquery UI Draggable。使用jquery UI属性句柄对我来说效果很好。http://packery.metafizzy.co/draggable.html#jquery-ui可拖动
你在jsfiddle上发布的解决方案对我不起作用。
只需像Cole提到的那样使用handle选项。
$(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/
使用jquery:
var draggie = $grid.find('.grid-item').draggable({
handle: '.ui-sortable-handle'
});
$grid.packery('bindUIDraggableEvents', draggie);