diff options
author | Andrew Dolgov <[email protected]> | 2011-11-08 20:40:44 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2011-11-08 20:40:44 +0400 |
commit | 81bea17aefb26859f825b9293c7c99192874806e (patch) | |
tree | fb244408ca271affa2899adb634788802c9a89d8 /lib/dojo/behavior.js | |
parent | 870a70e109ac9e80a88047044530de53d0404ec7 (diff) |
upgrade Dojo to 1.6.1
Diffstat (limited to 'lib/dojo/behavior.js')
-rw-r--r-- | lib/dojo/behavior.js | 89 |
1 files changed, 45 insertions, 44 deletions
diff --git a/lib/dojo/behavior.js b/lib/dojo/behavior.js index 15f1f23a3..8b058892f 100644 --- a/lib/dojo/behavior.js +++ b/lib/dojo/behavior.js @@ -1,5 +1,5 @@ /* - Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ @@ -9,23 +9,24 @@ if(!dojo._hasResource["dojo.behavior"]){ //_hasResource checks added by build. D dojo._hasResource["dojo.behavior"] = true; dojo.provide("dojo.behavior"); + dojo.behavior = new function(){ - // summary: + // summary: // Utility for unobtrusive/progressive event binding, DOM traversal, // and manipulation. // // description: - // - // A very simple, lightweight mechanism for applying code to - // existing documents, based around `dojo.query` (CSS3 selectors) for node selection, + // + // A very simple, lightweight mechanism for applying code to + // existing documents, based around `dojo.query` (CSS3 selectors) for node selection, // and a simple two-command API: `dojo.behavior.add()` and `dojo.behavior.apply()`; - // - // Behaviors apply to a given page, and are registered following the syntax + // + // Behaviors apply to a given page, and are registered following the syntax // options described by `dojo.behavior.add` to match nodes to actions, or "behaviors". - // + // // Added behaviors are applied to the current DOM when .apply() is called, - // matching only new nodes found since .apply() was last called. - // + // matching only new nodes found since .apply() was last called. + // function arrIn(obj, name){ if(!obj[name]){ obj[name] = []; } return obj[name]; @@ -51,7 +52,7 @@ dojo.behavior = new function(){ this.add = function(/* Object */behaviorObj){ // summary: // Add the specified behavior to the list of behaviors, ignoring existing - // matches. + // matches. // // description: // Add the specified behavior to the list of behaviors which will @@ -59,26 +60,26 @@ dojo.behavior = new function(){ // an already existing behavior do not replace the previous rules, // but are instead additive. New nodes which match the rule will // have all add()-ed behaviors applied to them when matched. - // + // // The "found" method is a generalized handler that's called as soon // as the node matches the selector. Rules for values that follow also // apply to the "found" key. - // - // The "on*" handlers are attached with `dojo.connect()`, using the + // + // The "on*" handlers are attached with `dojo.connect()`, using the // matching node - // + // // If the value corresponding to the ID key is a function and not a // list, it's treated as though it was the value of "found". // - // dojo.behavior.add() can be called any number of times before + // dojo.behavior.add() can be called any number of times before // the DOM is ready. `dojo.behavior.apply()` is called automatically // by `dojo.addOnLoad`, though can be called to re-apply previously added // behaviors anytime the DOM changes. // // There are a variety of formats permitted in the behaviorObject - // + // // example: - // Simple list of properties. "found" is special. "Found" is assumed if + // Simple list of properties. "found" is special. "Found" is assumed if // no property object for a given selector, and property is a function. // // | dojo.behavior.add({ @@ -95,7 +96,7 @@ dojo.behavior = new function(){ // | } // | }); // - // example: + // example: // If property is a string, a dojo.publish will be issued on the channel: // // | dojo.behavior.add({ @@ -106,15 +107,15 @@ dojo.behavior = new function(){ // | } // | }); // | dojo.subscribe("/got/newAnchor", function(node){ - // | // handle node finding when dojo.behavior.apply() is called, + // | // handle node finding when dojo.behavior.apply() is called, // | // provided a newly matched node is found. // | }); // // example: - // Scoping can be accomplished by passing an object as a property to + // Scoping can be accomplished by passing an object as a property to // a connection handle (on*): - // - // | dojo.behavior.add({ + // + // | dojo.behavior.add({ // | "#id": { // | // like calling dojo.hitch(foo,"bar"). execute foo.bar() in scope of foo // | "onmouseenter": { targetObj: foo, targetFunc: "bar" }, @@ -122,7 +123,7 @@ dojo.behavior = new function(){ // | } // | }); // - // example: + // example: // Bahaviors match on CSS3 Selectors, powered by dojo.query. Example selectors: // // | dojo.behavior.add({ @@ -130,31 +131,31 @@ dojo.behavior = new function(){ // | "#id4 > *": function(element){ // | // ... // | }, - // | + // | // | // match the first child node that's an element // | "#id4 > :first-child": { ... }, - // | + // | // | // match the last child node that's an element // | "#id4 > :last-child": { ... }, - // | + // | // | // all elements of type tagname // | "tagname": { // | // ... // | }, - // | + // | // | "tagname1 tagname2 tagname3": { // | // ... // | }, - // | + // | // | ".classname": { // | // ... // | }, - // | + // | // | "tagname.classname": { // | // ... // | } // | }); - // + // var tmpObj = {}; forIn(behaviorObj, this, function(behavior, name){ @@ -171,7 +172,7 @@ dojo.behavior = new function(){ arrIn(cversion, ruleName).push(rule); }); }); - } + }; var _applyToNode = function(node, action, ruleSetName){ if(dojo.isString(action)){ @@ -189,33 +190,33 @@ dojo.behavior = new function(){ dojo.connect(node, ruleSetName, action); } } - } + }; this.apply = function(){ // summary: // Applies all currently registered behaviors to the document. - // + // // description: // Applies all currently registered behaviors to the document, // taking care to ensure that only incremental updates are made - // since the last time add() or apply() were called. - // + // since the last time add() or apply() were called. + // // If new matching nodes have been added, all rules in a behavior will be // applied to that node. For previously matched nodes, only // behaviors which have been added since the last call to apply() // will be added to the nodes. // - // apply() is called once automatically by `dojo.addOnLoad`, so + // apply() is called once automatically by `dojo.addOnLoad`, so // registering behaviors with `dojo.behavior.add` before the DOM is // ready is acceptable, provided the dojo.behavior module is ready. - // - // Calling appy() manually after manipulating the DOM is required + // + // Calling appy() manually after manipulating the DOM is required // to rescan the DOM and apply newly .add()ed behaviors, or to match - // nodes that match existing behaviors when those nodes are added to + // nodes that match existing behaviors when those nodes are added to // the DOM. - // + // forIn(this._behaviors, function(tBehavior, id){ - dojo.query(id).forEach( + dojo.query(id).forEach( function(elem){ var runFrom = 0; var bid = "_dj_behavior_"+tBehavior.id; @@ -242,8 +243,8 @@ dojo.behavior = new function(){ } ); }); - } -} + }; +}; dojo.addOnLoad(dojo.behavior, "apply"); |