src/cm/media/js/lib/yui/yui3.0.0/examples/attribute/attribute-event.html
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
<html>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
<head>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
	<title>YUI Library Examples: Attribute: Attribute Change Events</title>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
    	<link rel="stylesheet" type="text/css" href="../../assets/yui.css" >
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
<style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
    /*Supplemental CSS for the YUI distribution*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
    #custom-doc { width: 95%; min-width: 950px; }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
    #pagetitle {background-image: url(../../assets/bg_hd.gif);}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
/*    #pagetitle h1 {background-image: url(../../assets/title_h_bg.gif);}*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
</style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
<link rel="stylesheet" type="text/css" href="../../assets/dpSyntaxHighlighter.css">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
<link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
<script type="text/javascript" src="../../build/yui/yui-min.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
<style type="text/css">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
    #example-out .event {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
        padding:2px 2px 2px 5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    #example-out .event-props {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
        font-family:courier;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
        margin-top:2px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
    #example-out .event-title {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
        font-weight:bold;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
        font-family:arial;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
        color:#8dd5e7;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
        margin-top:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
        margin-bottom:3px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
    #example-out {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
        margin:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
        border:1px solid #000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
        color:#ffffff;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
        background-color:#004c6d;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
        overflow:auto;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        height:20em;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
    .attrs {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
        border:1px solid #000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
        background-color:#cdcdcd;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
        margin:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
    .attrs .header {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
        font-weight:bold;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
        background-color:#aaa;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
        padding:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
    .attrs .body {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
        padding:10px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
    .attrs .footer {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
        padding:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
    .attrs label {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
        display:block;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
        float:left;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
        clear:left;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
        font-weight:bold;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
        width:8em;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
    .attrs #preventFoobar.hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
        display:none;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
    .attrs #preventFoobar {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
        margin-left:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
        display:inline;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
        float:none;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
        clear:none;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
</style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
</head>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
<body id="yahoo-com" class=" yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
<div id="custom-doc" class="yui-t2">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
<div id="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
	<div id="ygunav">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
		<p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
            <em>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
                <a href="http://developer.yahoo.com/yui/3/">YUI 3.x Home</a> <i> - </i>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
            </em>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
		</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
		<form action="http://search.yahoo.com/search" id="sitesearchform">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
            <input name="vs" type="hidden" value="developer.yahoo.com">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
            <input name="vs" type="hidden" value="yuiblog.com">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
		    <div id="sitesearch">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
		    	<label for="searchinput">Site Search (YDN &amp; YUIBlog): </label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
			    <input type="text" id="searchinput" name="p">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
			    <input type="submit" value="Search" id="searchsubmit" class="ygbt">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
		    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
		</form>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
	<div id="ygma"><a href="../../"><img src="../../assets/logo.gif"  border="0" width="200" height="93"></a></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
	<div id="pagetitle"><h1>YUI Library Examples: Attribute: Attribute Change Events</h1></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
<div id="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
	<div id="yui-main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
		<div class="yui-b">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
		  <div class="yui-ge">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
			  <div class="yui-u first example" id="main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
	<h2>Attribute: Attribute Change Events</h2>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
	<div id="example" class="promo">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
	<div class="example-intro">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
	Attribute change events are one of the key benefits of using attributes to maintain state for your objects, instead of regular object properties. This example shows how you can listen for attribute change events and work with the event payload they receive. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
	</div>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
	<div class="module example-container ">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
			<div class="hd exampleHd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
			<p class="newWindowButton yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
                <a href="attribute-event_clean.html" target="_blank">View example in new window.</a>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
            </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
		</div>		<div id="example-canvas" class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
	<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
	<div class="attrs">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
    <div class="header">Enter a new value and click the "Change Value" button:</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
    <div class="body">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
        <p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
            <label for="attrSel">Attribute</label>: 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
            <select id="attrSel">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
                <option value="foo">foo</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
                <option value="bar">bar</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
                <option value="foobar">foobar</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
            </select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
            <label id="preventFoobar" class="hidden"><input type="checkbox" checked="true"> Prevent change</label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
        </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
        <p><label for="currentVal">Current Value</label>: <span id="currentVal"></span></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
        <p><label for="newVal">New Value</label>: <input type="text" id="newVal" /></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
    <div class="footer">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
        <button type="button" id="changeValue">Change Value</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
<div id="example-out"></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
<script type="text/javascript">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
// Get a new YUI instance 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
YUI({base:"../../build/", timeout: 10000}).use("node", "attribute", function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
    // Setup a custom class with attribute support
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
    function MyClass(cfg) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
        // Setup attribute configuration
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
        var attrs = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
            "foo" : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
                value:5
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
     
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
            "bar" : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
                value:"Hello World!"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
            "foobar" : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
                value:true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
        this.addAttrs(attrs, cfg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
    Y.augment(MyClass, Y.Attribute);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
    var o1 = new MyClass();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
    function displayEvent(e, title) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
        var str = '<div class="event"><div class="event-title">' + title + '</div>';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
        if (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
            str += 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
            '<ul class="event-props"><li>e.attrName: ' 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
            + e.attrName 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
            + '</li><li>e.prevVal: '
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
            + e.prevVal
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
            + '</li><li>e.newVal: '
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
            + e.newVal
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
            + '</li></ul></div>';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
        str += '</div>';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
        Y.one("#example-out").prepend(str);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
    // Start Example Form Handling
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
    var attrSel = Y.one("#attrSel");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
    var newValTxt = Y.one("#newVal");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
    var currentValSpan = Y.one("#currentVal");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
    var preventFoobarChk = Y.one("#preventFoobar input[type=checkbox]");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
    var preventFoobarLbl = Y.one("#preventFoobar");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
    var attrOpts = attrSel.get("options");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
    function updateVal() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
        var selIndex = attrSel.get("selectedIndex");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
        var attr = attrOpts.item(selIndex).get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
        o1.set(attr, newValTxt.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
    Y.on("click", updateVal, "#changeValue");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
    function populateCurrentValue() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
        var selIndex = attrSel.get("selectedIndex");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
        var attr = attrOpts.item(selIndex).get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
        currentValSpan.set("innerHTML", o1.get(attr));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
        newValTxt.set("value", "");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
        if (attr === "foobar") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
            preventFoobarLbl.removeClass("hidden");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
            preventFoobarLbl.addClass("hidden");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
    populateCurrentValue();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
    Y.on("change", populateCurrentValue, attrSel);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
    // End Example Form Handling
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
    // Attribute Change Event Listners
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
    o1.after("fooChange", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
        displayEvent(e, "After fooChange");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
        currentValSpan.set("innerHTML", e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
    o1.after("barChange", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
        displayEvent(e, "After barChange");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
        currentValSpan.set("innerHTML", e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
    o1.on("foobarChange", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
        if (preventFoobarChk.get("checked")) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
            // Calling preventDefault, in an "on" listener
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
            // will prevent the attribute change from occuring
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
            // and the after listener being called.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
            e.preventDefault();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
            displayEvent(null, "On foobarChange (prevented)");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
    o1.after("foobarChange", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
        // This foobar after listener will not get called, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
        // if we end up preventing default in the "on" 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
        // listener above.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
        displayEvent(e, "After foobarChange");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
        currentValSpan.set("innerHTML", e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
	<!--END SOURCE CODE FOR EXAMPLE =============================== -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
	</div>			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
	<h3>Listening For Attribute Change Events</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
<p>In this example, we'll look at how you can setup listeners for attribute change events, and work with the event payload which the listeners receive.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
<h4>Setting Up A Custom Class With Attribute</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
<p>We start by setting up the same custom class we created for the <a href="attribute-basic.html">basic example</a> with 3 attributes <code>foo</code>, <code>bar</code> and <code>foobar</code>, using the code below:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
<div id="syntax1" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">YUI<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="kw2">use</span><span class="br0">&#40;</span><span class="st0">&quot;attribute&quot;</span><span class="sy0">,</span> <span class="st0">&quot;node&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>Y<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">// Setup a custom class with attribute support</span></div></li><li class="li1"><div class="de1">    <span class="kw2">function</span> MyClass<span class="br0">&#40;</span>cfg<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="co1">// Setup attribute configuration</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> attrs <span class="sy0">=</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">            <span class="st0">&quot;foo&quot;</span> <span class="sy0">:</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                value<span class="sy0">:</span><span class="nu0">5</span></div></li><li class="li2"><div class="de2">            <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">            <span class="st0">&quot;bar&quot;</span> <span class="sy0">:</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                value<span class="sy0">:</span><span class="st0">&quot;Hello World!&quot;</span></div></li><li class="li1"><div class="de1">            <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">            <span class="st0">&quot;foobar&quot;</span> <span class="sy0">:</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                value<span class="sy0">:</span><span class="kw2">true</span></div></li><li class="li1"><div class="de1">            <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="kw1">this</span>.<span class="me1">addAttrs</span><span class="br0">&#40;</span>attrs<span class="sy0">,</span> cfg<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    Y.<span class="me1">augment</span><span class="br0">&#40;</span>MyClass<span class="sy0">,</span> Y.<span class="me1">Attribute</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">YUI<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="kw2">use</span><span class="br0">&#40;</span><span class="st0">&quot;attribute&quot;</span><span class="sy0">,</span> <span class="st0">&quot;node&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>Y<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
    <span class="co1">// Setup a custom class with attribute support</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
    <span class="kw2">function</span> MyClass<span class="br0">&#40;</span>cfg<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
        <span class="co1">// Setup attribute configuration</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
        <span class="kw2">var</span> attrs <span class="sy0">=</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
            <span class="st0">&quot;foo&quot;</span> <span class="sy0">:</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
                value<span class="sy0">:</span><span class="nu0">5</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
            <span class="br0">&#125;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
            <span class="st0">&quot;bar&quot;</span> <span class="sy0">:</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
                value<span class="sy0">:</span><span class="st0">&quot;Hello World!&quot;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
            <span class="br0">&#125;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
            <span class="st0">&quot;foobar&quot;</span> <span class="sy0">:</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
                value<span class="sy0">:</span><span class="kw2">true</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
            <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
        <span class="br0">&#125;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
        <span class="kw1">this</span>.<span class="me1">addAttrs</span><span class="br0">&#40;</span>attrs<span class="sy0">,</span> cfg<span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
    <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
    Y.<span class="me1">augment</span><span class="br0">&#40;</span>MyClass<span class="sy0">,</span> Y.<span class="me1">Attribute</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax1-plain">YUI().use("attribute", "node", function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
    // Setup a custom class with attribute support
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
    function MyClass(cfg) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
        // Setup attribute configuration
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
        var attrs = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
            "foo" : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
                value:5
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
     
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
            "bar" : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
                value:"Hello World!"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
            "foobar" : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
                value:true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
        this.addAttrs(attrs, cfg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
    Y.augment(MyClass, Y.Attribute);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
});</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
<h4>Registering Event Listeners</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
<p>Once we have an instance of the custom class, we can use the <code>on</code> and <code>after</code> methods provided by Attribute, to listen for changes in the value of each of the attributes:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
<div id="syntax2" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">var</span> o1 <span class="sy0">=</span> <span class="kw2">new</span> MyClass<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">...</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2"><span class="co1">// Event Listners</span></div></li><li class="li1"><div class="de1">o1.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&quot;fooChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    displayEvent<span class="br0">&#40;</span>e<span class="sy0">,</span> <span class="st0">&quot;After fooChange&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    currentValSpan.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;innerHTML&quot;</span><span class="sy0">,</span> e.<span class="me1">newVal</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">o1.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&quot;barChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    displayEvent<span class="br0">&#40;</span>e<span class="sy0">,</span> <span class="st0">&quot;After barChange&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    currentValSpan.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;innerHTML&quot;</span><span class="sy0">,</span> e.<span class="me1">newVal</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">o1.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;foobarChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="kw1">if</span> <span class="br0">&#40;</span>preventFoobarChk.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;checked&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">        <span class="co1">// Calling preventDefault, in an &quot;on&quot; listener</span></div></li><li class="li1"><div class="de1">        <span class="co1">// will prevent the attribute change from occuring</span></div></li><li class="li1"><div class="de1">        <span class="co1">// and the after listener being called.</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        e.<span class="me1">preventDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">        displayEvent<span class="br0">&#40;</span><span class="kw2">null</span><span class="sy0">,</span> <span class="st0">&quot;On foobarChange (prevented)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">o1.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&quot;foobarChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">// This foobar after listener will not get called, </span></div></li><li class="li1"><div class="de1">    <span class="co1">// if we end up preventing default in the &quot;on&quot; </span></div></li><li class="li1"><div class="de1">    <span class="co1">// listener above.</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    displayEvent<span class="br0">&#40;</span>e<span class="sy0">,</span> <span class="st0">&quot;After foobarChange&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    currentValSpan.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;innerHTML&quot;</span><span class="sy0">,</span> e.<span class="me1">newVal</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="kw2">var</span> o1 <span class="sy0">=</span> <span class="kw2">new</span> MyClass<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
...
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
<span class="co1">// Event Listners</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
o1.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&quot;fooChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
    displayEvent<span class="br0">&#40;</span>e<span class="sy0">,</span> <span class="st0">&quot;After fooChange&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
    currentValSpan.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;innerHTML&quot;</span><span class="sy0">,</span> e.<span class="me1">newVal</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
o1.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&quot;barChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
    displayEvent<span class="br0">&#40;</span>e<span class="sy0">,</span> <span class="st0">&quot;After barChange&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
    currentValSpan.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;innerHTML&quot;</span><span class="sy0">,</span> e.<span class="me1">newVal</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
o1.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;foobarChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
    <span class="kw1">if</span> <span class="br0">&#40;</span>preventFoobarChk.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;checked&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
        <span class="co1">// Calling preventDefault, in an &quot;on&quot; listener</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
        <span class="co1">// will prevent the attribute change from occuring</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
        <span class="co1">// and the after listener being called.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
        e.<span class="me1">preventDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
        displayEvent<span class="br0">&#40;</span><span class="kw2">null</span><span class="sy0">,</span> <span class="st0">&quot;On foobarChange (prevented)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
    <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
o1.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&quot;foobarChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
    <span class="co1">// This foobar after listener will not get called, </span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
    <span class="co1">// if we end up preventing default in the &quot;on&quot; </span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
    <span class="co1">// listener above.</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
    displayEvent<span class="br0">&#40;</span>e<span class="sy0">,</span> <span class="st0">&quot;After foobarChange&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
    currentValSpan.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;innerHTML&quot;</span><span class="sy0">,</span> e.<span class="me1">newVal</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax2-plain">var o1 = new MyClass();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
...
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
// Event Listners
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
o1.after("fooChange", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
    displayEvent(e, "After fooChange");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
    currentValSpan.set("innerHTML", e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
o1.after("barChange", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
    displayEvent(e, "After barChange");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
    currentValSpan.set("innerHTML", e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
o1.on("foobarChange", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
    if (preventFoobarChk.get("checked")) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
        // Calling preventDefault, in an "on" listener
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
        // will prevent the attribute change from occuring
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
        // and the after listener being called.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
        e.preventDefault();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
        displayEvent(null, "On foobarChange (prevented)");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
o1.after("foobarChange", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
    // This foobar after listener will not get called, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
    // if we end up preventing default in the "on" 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
    // listener above.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
    displayEvent(e, "After foobarChange");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
    currentValSpan.set("innerHTML", e.newVal);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
});</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
<p>As seen in the above code, the event type for attribute change events is created by concatenating the attribute name with <code>"Change"</code> (e.g. <code>"fooChange"</code>), and this event type is used for both the <code>on</code> and <code>after</code> subscription methods. Whenever an attribute value is changed through Attribute's <code>set</code> method, both "on" and "after" subscribers are notified.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
<h4>On vs. After</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
<p><strong>on :</strong> Subscribers to the "on" moment, will be notified <em>before</em> any actual state change has occurred. This provides the opportunity to prevent the state change from occurring, using the <code>preventDefault</code> method of the event facade object passed to the subscriber. If you use <code>get</code> to retrieve the value of the attribute in an "on" subscriber, you will receive the current, unchanged value. However the event facade provides access to the value which the attribute is being set to, through it's <code>newVal</code> property.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
<p><strong>after :</strong> Subscribers to the "after" moment, will be notified <em>after</em> the attribute's state has been updated. This provides the opportunity to update state in other parts of your application, in response to a change in the attribute's state.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
<p>Based on the definition above, <code>after</code> listeners are not invoked if state change is prevented, for example, due to one of the <code>on</code> listeners calling <code>preventDefault</code> on the event object, as is done in the <code>on</code> listener for the <code>foobar</code> attribute:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
<div id="syntax3" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">o1.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;foobarChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>event<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">// Calling preventDefault, in an &quot;on&quot; listener</span></div></li><li class="li1"><div class="de1">    <span class="co1">// will prevent the attribute change from occurring</span></div></li><li class="li2"><div class="de2">    <span class="co1">// and prevent the after listeners from being called</span></div></li><li class="li1"><div class="de1">    displayEvent<span class="br0">&#40;</span>event<span class="sy0">,</span> <span class="st0">&quot;on foobarChange (change prevented)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    event.<span class="me1">preventDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">o1.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;foobarChange&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>event<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
    <span class="co1">// Calling preventDefault, in an &quot;on&quot; listener</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
    <span class="co1">// will prevent the attribute change from occurring</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
    <span class="co1">// and prevent the after listeners from being called</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
    displayEvent<span class="br0">&#40;</span>event<span class="sy0">,</span> <span class="st0">&quot;on foobarChange (change prevented)&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
    event.<span class="me1">preventDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax3-plain">o1.on("foobarChange", function(event) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
    // Calling preventDefault, in an "on" listener
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
    // will prevent the attribute change from occurring
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
    // and prevent the after listeners from being called
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
    displayEvent(event, "on foobarChange (change prevented)");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
    event.preventDefault();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
});</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
<p>For primitive values (non-Object values), the <code>after</code> listeners will also not be invoked if there is no change in the actual value of the attribute. That is, if the new value of the attribute is the same as the current value (based on the identity operator, <code>===</code>), the <code>after</code> listeners will not be notified because there is no change in state. You can see this, by setting an attribute to the same value twice in a row.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
<h4>Event Facade</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
<p>The event object (an instance of <a href="../../api/EventFacade.html">EventFacade</a>) passed to attribute change event subscribers, has the following interesting properties and methods related to attribute management:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
<dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
    <dt>newVal</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
    <dd>The value which the attribute will be set to (in the case of "on" subscribers), or has been set to (in the case of "after" subscribers</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
    <dt>prevVal</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
    <dd>The value which the attribute is currently set to (in the case of "on" subscribers), or was previously set to (in the case of "after" subscribers</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
    <dt>attrName</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
    <dd>The name of the attribute which is being set</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
    <dt>subAttrName</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
    <dd>Attribute also allows you to set nested properties of attributes which have values which are objects through the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
    <code>set</code> method (e.g. <code>o1.set("x.y.z")</code>). This property will contain the path to the property which was changed.</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
    <dt>preventDefault()<dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
    <dd>This method can be called in an "on" subscriber to prevent the attribute's value from being updated (the default behavior). Calling this method in an "after" listener has no impact, since the default behavior has already been invoked.</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
    <dt>stopImmediatePropagation()</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
    <dd>This method can be called in "on" or "after" subscribers, and will prevent the rest of the subscriber stack from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
    being invoked, but will not prevent the attribute's value from being updated.</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
</dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
<p>The <a href="attribute-event-speeddate.html">"Attribute Event Based Speed Dating" example</a> provides a look at how you can leverage attribute change events in your applications, to decouple logic both within your class, and when interacting with other objects.</p>				</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
				<div class="yui-u sidebar">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
					<div id="examples" class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
						<h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
    Attribute Examples:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
						<div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
							<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
								<li><a href='../attribute/attribute-basic.html'>Basic Attribute Configuration</a></li><li><a href='../attribute/attribute-rw.html'>Read-Only and Write-Once Attributes</a></li><li class='selected'><a href='../attribute/attribute-event.html'>Attribute Change Events</a></li><li><a href='../attribute/attribute-basic-speeddate.html'>Attribute Based Speed Dating</a></li><li><a href='../attribute/attribute-event-speeddate.html'>Attribute Event Based Speed Dating</a></li><li><a href='../attribute/attribute-getset.html'>Attribute Getters, Setters and Validators</a></li>							</ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
						</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
					<div class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
						<h4>More Attribute Resources:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
                        <div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
						<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
							<!-- <li><a href="http://developer.yahoo.com/yui/attribute/">User's Guide</a> (external)</li> -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
<li><a href="../../api/module_attribute.html">API Documentation</a></li></ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
			  </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
<div class="yui-b toc3" id="tocWrapper">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
<!-- TABLE OF CONTENTS -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
<div id="toc">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
<li class="sect first">YUI 3 Resources</li><li class="item"><a title="YUI 3 -- Yahoo! User Interface (YUI) Library" href="http://developer.yahoo.com/yui/3/">YUI 3 Web Site</a></li><li class="item"><a title="Examples of every YUI utility and control in action" href="../../examples/">YUI 3 Examples</a></li><li class="item"><a title="Instantly searchable API documentation for the entire YUI library." href="../../api/">YUI 3 API Docs</a></li><li class="item"><a title="YUI 3 Dependency Configurator -- configure your custom YUI implementation" href="http://developer.yahoo.com/yui/3/configurator">YUI 3 Dependency Configurator</a></li><li class="item"><a title="The YUI 3 Forum on YUILibrary.com" href="http://yuilibrary.com/forum/viewforum.php?f=15">YUI 3 Forums (external)</a></li><li class="item"><a title="Found a bug or a missing feature? Let us know on YUILibrary.com." href="http://developer.yahoo.com/yui/articles/reportingbugs/">Bug Reports/Feature Requests</a></li><li class="item"><a title="YUI is free and open, offered under a BSD license." href="http://developer.yahoo.com/yui/license.html">YUI License</a></li><li class="item"><a title="Download and fork the YUI project on GitHub" href="http://github.com/yui">YUI on Github</a></li><li class="item"><a title="The Yahoo! User Interface Blog" href="http://yuiblog.com">YUI Blog (external)</a></li><li class="sect">YUI 3 Core - Examples</li><li class="item"><a title="YUI Global Object - Functional Examples" href="../../examples/yui/index.html">YUI Global Object</a></li><li class="item"><a title="Event - Functional Examples" href="../../examples/event/index.html">Event</a></li><li class="item"><a title="Node - Functional Examples" href="../../examples/node/index.html">Node</a></li><li class="sect">YUI 3 Component Infrastructure - Examples</li><li class="selected "><a title="Attribute - Functional Examples" href="../../examples/attribute/index.html">Attribute</a></li><li class="item"><a title="Plugin - Functional Examples" href="../../examples/plugin/index.html">Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Widget - Functional Examples" href="../../examples/widget/index.html">Widget <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Utilities - Examples</li><li class="item"><a title="Animation - Functional Examples" href="../../examples/anim/index.html">Animation</a></li><li class="item"><a title="AsyncQueue - Functional Examples" href="../../examples/async-queue/index.html">AsyncQueue</a></li><li class="item"><a title="Browser History - Functional Examples" href="../../examples/history/index.html">Browser History</a></li><li class="item"><a title="Cache - Functional Examples" href="../../examples/cache/index.html">Cache</a></li><li class="item"><a title="Cookie - Functional Examples" href="../../examples/cookie/index.html">Cookie</a></li><li class="item"><a title="DataSchema - Functional Examples" href="../../examples/dataschema/index.html">DataSchema <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataSource - Functional Examples" href="../../examples/datasource/index.html">DataSource <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataType - Functional Examples" href="../../examples/datatype/index.html">DataType <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Drag &amp; Drop - Functional Examples" href="../../examples/dd/index.html">Drag &amp; Drop</a></li><li class="item"><a title="Get - Functional Examples" href="../../examples/get/index.html">Get</a></li><li class="item"><a title="ImageLoader - Functional Examples" href="../../examples/imageloader/index.html">ImageLoader</a></li><li class="item"><a title="IO - Functional Examples" href="../../examples/io/index.html">IO</a></li><li class="item"><a title="JSON (JavaScript Object Notation) - Functional Examples" href="../../examples/json/index.html">JSON</a></li><li class="item"><a title="Stylesheet - Functional Examples" href="../../examples/stylesheet/index.html">Stylesheet</a></li><li class="sect">YUI 3 Widgets - Examples</li><li class="item"><a title="Overlay - Functional Examples" href="../../examples/overlay/index.html">Overlay <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Slider - Functional Examples" href="../../examples/slider/index.html">Slider <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Node Plugins - Examples</li><li class="item"><a title="FocusManager Node Plugin - Functional Examples" href="../../examples/node-focusmanager/index.html">FocusManager Node Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="MenuNav Node Plugin - Functional Examples" href="../../examples/node-menunav/index.html">MenuNav Node Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 CSS - Examples</li><li class="item"><a title="YUI CSS Reset - Functional Examples" href="../../examples/cssreset/index.html">CSS Reset</a></li><li class="item"><a title="YUI Fonts - Functional Examples" href="../../examples/cssfonts/index.html">CSS Fonts</a></li><li class="item"><a title="YUI Base - Functional Examples" href="../../examples/cssbase/index.html">CSS Base</a></li><li class="sect">YUI 3 Developer Tools - Examples</li><li class="item"><a title="Console - Functional Examples" href="../../examples/console/index.html">Console <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Console Filters Plugin- Functional Examples" href="../../examples/console-filters/index.html">Plugin.ConsoleFilters <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Profiler - Functional Examples" href="../../examples/profiler/index.html">Profiler</a></li><li class="item"><a title="Test - Functional Examples" href="../../examples/test/index.html">Test</a></li><li class="sect">Other Useful YUI 3 Resources</li><li class="item"><a title="Answers to Frequently Asked Questions about the YUI Library" href="http://developer.yahoo.com/yui/articles/faq/">YUI FAQ (external)</a></li><li class="item"><a title="Yahoo!'s philosophy of Graded Browser Support" href="http://developer.yahoo.com/yui/articles/gbs/">Graded Browser Support (external)</a></li><li class="item"><a title="Videos and podcasts from the YUI Team and from the Yahoo! frontend engineering community." href="http://developer.yahoo.com/yui/theater/">YUI Theater (external)</a></li></ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
	</div><!--closes bd-->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
	<div id="ft">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
        <p class="first">Copyright &copy; 2009 Yahoo! Inc. All rights reserved.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
        <p><a href="http://privacy.yahoo.com/privacy/us/devel/index.html">Privacy Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
            <a href="http://docs.yahoo.com/info/terms/">Terms of Service</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
            <a href="http://docs.yahoo.com/info/copyright/copyright.html">Copyright Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
            <a href="http://careers.yahoo.com/">Job Openings</a></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
<script language="javascript"> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
var yuiConfig = {base:"../../build/", timeout: 10000};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
<script src="../../assets/syntax.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
<script src="../../assets/dpSyntaxHighlighter.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
<script language="javascript"> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
dp.SyntaxHighlighter.HighlightAll('code'); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
</body>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
</html>