This example shows how to create multiple draggable items efficiently.
- Item #1
- Item #2
- Item #3
- Item #4
- Item #5
- Item #6
- Item #7
- Item #8
- Item #9
- Item #10
Setting up the Delegate container and items
First we need to create an HTML Node to act as the delegate container and give it some nodes to make draggable.
<div id="demo"> <ul> <li>Item #1</li> <li>Item #2</li> <li>Item #3</li> <li>Item #4</li> <li>Item #5</li> <li>Item #6</li> <li>Item #7</li> <li>Item #8</li> <li>Item #9</li> <li>Item #10</li> </ul> </div>
Now we give them some CSS to make them visible.
#demo { width: 200px; } #demo ul li { border: 1px solid black; background-color: #8DD5E7; cursor: move; margin: 3px; list-style-type: none; }
Setting up the YUI Instance
Now we need to create our YUI instance and tell it to load the dd-delegate
module.
YUI().use('dd-delegate');
Making the Nodes draggable
Now that we have a YUI instance with the dd-delegate
module, we need to instantiate the Delegate
instance on this container and nodes.
YUI().use('dd-delegate', function(Y) { var del = new Y.DD.Delegate({ container: '#demo', nodes: 'li' }); });
Adding items to the list without creating new instances.
One of the benefits of using DD.Delegate
is adding new items to the list of draggables without having to create new instances for each new item.
Here we are simply adding new LI
's to the list. Notice that we are doing nothing with the del
object. The items are automatically draggable since they match the nodes
selector given to the DD.Delegate
instance.
Y.one('#make').on('click', function(e) { var demo = Y.one('#demo ul'); for (var i = 1; i < 11; i++) { demo.append('<li>New item #' + i + '</li>'); } });