2015-04-20 2 views
0

Я хотел бы узнать, можно ли его перетащить в контейнер jsPlumb. Если вы нажмете и перетащите контейнер (не на элемент), он перемещается, когда устройство может сфокусироваться на разных частях или элементах этого контейнера.
E.g. блок-схему, такую ​​как пример на их веб-странице; http://www.jsplumb.org/demo/flowchart/jquery.html и я хочу, чтобы весь контейнер перемещался, если я нажимаю и перетаскиваю так, чтобы все элементы перемещались также.Можно ли перетаскивать контейнер? jsplumb

Спасибо.

ответ

1

Вы можете играть с этим example. Сначала нажмите кнопку «Создать контейнер», затем «Новая ячейка внутри контейнера». Вы можете перетащить контейнер, а также ячейки внутри него.

JavaScript:

var instanceRegistry = []; 
var containerRegistry = []; 
var cellRegistry = []; 

$(function() { 

var endpointOptions = { 
    isSource: true, 
    isTarget: true 
}; 

$('#newContainerButton').click(newContainer); 
$('#newCellButton').click(newCell); 

function newContainer() { 
var containerIndex = "container" + (containerRegistry.length + 1); 
$('#containerTemplate').clone().appendTo('#mainContainer') 
    .show() 
    .attr('id', containerIndex) 
    .draggable({ 
    containment: 'mainContainer', 
    cursor: 'move' 
    }) 
    .find('.newCellButton').click(newCell).end(); 

containerRegistry.push(containerIndex); 
var containerInstance = jsPlumb.getInstance({ 
    Container: containerIndex, 
    Endpoint: [      // The default Endpoint definition. 
     'Dot',      // Endpoint type 
     {       // Endpoint type options 
      radius: 6,    // Defines the radius of the dot 
      cssClass: 'cell-endpoint' // A CSS class to attach to the element the Endpoint creates 
      } 
    ], 
    PaintStyle: {     // The default appearance of a Connector 
     strokeStyle: '#2e6f9a',  // color for a Connector 
     lineWidth: 2    // width of a Connector's line 
    } 
}); 
instanceRegistry.push(containerInstance); 
} 




function newCell(event) { 
var $container = $(event.target).parent(); 
var cellIndex = "cell" + (cellRegistry.length + 1); 
$('#cellTemplate').clone().appendTo($container) 
    .show() 
    .attr('id', cellIndex); 
cellRegistry.push(cellIndex); 

var num = containerRegistry.indexOf($container.attr('id')); 
var instance = instanceRegistry[num]; 

instance.draggable(cellIndex, { 
    containment: $container, 
    cursor: 'move' 
}); 

instance.addEndpoint(cellIndex, {anchor: "Top"}, endpointOptions); 
instance.addEndpoint(cellIndex, {anchor: "Right"}, endpointOptions); 
instance.addEndpoint(cellIndex, {anchor: "Bottom"}, endpointOptions); 
instance.addEndpoint(cellIndex, {anchor: "Left"}, endpointOptions); 
} 

}); 
+0

Привет, спасибо за ответ, я попытаюсь объяснить немного лучше, что хочу. Я не хочу, чтобы весь контейнер был перетаскиваем. Я ищу способ, чтобы сделать этот контейнер неподвижным и перемещать все, что внутри него, и элементы внутри не должны терять свои «шаблоны» поведения. Что-то вроде GPS, контейнер всегда тот же, и «здания», и вся информация остается прежней, но вы можете перемещаться и смотреть разные разделы ... Я не знаю, сделал ли я немного более ясным извините ... спасибо заранее! – vcuevas

+0

Для людей, пытающихся привести пример, не забудьте обновить внешнюю зависимость jsplumb, потому что одна в ней устарела и не найдена. – Overdrivr

0

Да, вы можете сделать это езильно с помощью библиотеки jQuery под названием - «jQuery UI».

Проверьте следующую ссылку:

https://jqueryui.com/draggable/

Вы будете в состоянии сделать это eazily, в течение 5 минут.

+0

Привет спасибо за ответ, я попытаюсь объяснить немного лучше, что я хочу. Я не хочу, чтобы весь контейнер был перетаскиваем. Я ищу способ, чтобы сделать этот контейнер неподвижным и перемещать все, что внутри него, и элементы внутри не должны терять свои «шаблоны» поведения. Что-то вроде GPS, контейнер всегда тот же, и «здания», и вся информация остается прежней, но вы можете перемещаться и смотреть разные разделы ... Я не знаю, сделал ли я немного более ясным извините ... спасибо заранее! – vcuevas

+0

Для этого вам нужны призыв ajax. В карте Google используется ajax для загрузки данных с сервера. Это будет сложный сценарий, но вы можете сделать это вот так: 1) Сделать фиксированный контейнер - Div 1 {width: 100px; height: 100px;} 2) Сделать Div2 внутри div1 {width: 1000px; height: 1000px;} и сделать это перетаскиваемым. 3) Теперь вы получаете эффект содержимого, перемещающегося внутри фиксированного контейнера – Deadpool

+0

Хорошо, я получил основную идею благодаря тому, что я буду играть с этим немного! – vcuevas

Смежные вопросы