diff -r 322d0feea350 -r 89ef5ed3c48b src/cm/media/js/lib/yui/yui_3.10.3/docs/node/node-evt-delegation.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/media/js/lib/yui/yui_3.10.3/docs/node/node-evt-delegation.html Tue Jul 16 14:29:46 2013 +0200 @@ -0,0 +1,345 @@ + + + + + Example: Delegating Node Events + + + + + + + + + + +
+
+

+
+ + +

Example: Delegating Node Events

+
+
+
+
+
+

This example demonstrates using a single event listener on a list to delegate clicks on the list items.

+
+ +
+ +
    +
  • Click me if you don't mind...
  • +
  • Click me if you don't mind...
  • +
  • Click me if you don't mind...
  • +
  • Click me if you don't mind...
  • +
+ + + +
+ +

Setting up the HTML

+

First we need some HTML to work with.

+
<ul id="demo">
+    <li>Click me if you don't mind...</li>
+    <li>Click me if you don't mind...</li>
+    <li>Click me if you don't mind...</li>
+    <li>Click me if you don't mind...</li>
+</ul>
+ + +

Geting a NodeList Instance

+

We will use the all method of our YUI instance to get a NodeList instance to work with.

+
var nodes = Y.all('#demo li');
+ + +

Delegating Node Events

+

In this example, we will listen for a click event on the list and handle it at the item level and use information from the event object to update the nodes.

+
var onClick = function(e) {
+    e.currentTarget.addClass('highlight'); // e.currentTarget === #demo li
+    e.target.setHTML('Thanks for the click!'); // e.target === #demo li or #demo li em
+    e.container.setStyle('border', '5px solid #FFA100'); // e.container === #demo
+
+    nodes.filter(':not(.highlight)').setHTML('What about me?');
+};
+ + +

Now we just assign the handler to the UL using the delegate method to handle clicks on each LI.

+
Y.one('#demo').delegate('click', onClick, 'li');
+ + +

Complete Example Source

+
<style>
+#demo li {
+    height: 3em;
+}
+</style>
+<ul id="demo">
+    <li><em>Click me if you don't mind...</em></li>
+    <li><em>Click me if you don't mind...</em></li>
+    <li><em>Click me if you don't mind...</em></li>
+    <li><em>Click me if you don't mind...</em></li>
+</ul>
+
+<script type="text/javascript">
+YUI().use('node', function(Y) {
+    var nodes = Y.all('#demo li');
+
+    var onClick = function(e) {
+        e.currentTarget.addClass('highlight'); // e.currentTarget === #demo li 
+        e.target.setHTML('Thanks for the click!'); // e.target === #demo li or #demo li em
+        e.container.setStyle('border', '5px solid #FFA100'); // e.container === #demo
+
+        nodes.filter(':not(.highlight)').setHTML('What about me?');
+    };
+
+    Y.one('#demo').delegate('click', onClick, 'li');
+});
+</script>
+ +
+
+
+ +
+ +
+
+
+ + + + + + + + + + +