UNPKG

dojo

Version:

Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.

111 lines (98 loc) 3.76 kB
define(["./kernel", "../query", "./array", "./html", "../NodeList-dom"], function(dojo, query, array){ // module: // dojo/_base/NodeList /*===== return { // summary: // This module extends dojo/NodeList with the legacy connect(), coords(), // blur(), focus(), change(), click(), error(), keydown(), keypress(), // keyup(), load(), mousedown(), mouseenter(), mouseleave(), mousemove(), // mouseout(), mouseover(), mouseup(), and submit() methods. }; =====*/ var NodeList = query.NodeList, nlp = NodeList.prototype; nlp.connect = NodeList._adaptAsForEach(function(){ // don't bind early to dojo.connect since we no longer explicitly depend on it return dojo.connect.apply(this, arguments); }); /*===== nlp.connect = function(methodName, objOrFunc, funcName){ // summary: // Attach event handlers to every item of the NodeList. Uses dojo.connect() // so event properties are normalized. // // Application must manually require() "dojo/_base/connect" before using this method. // methodName: String // the name of the method to attach to. For DOM events, this should be // the lower-case name of the event // objOrFunc: Object|Function|String // if 2 arguments are passed (methodName, objOrFunc), objOrFunc should // reference a function or be the name of the function in the global // namespace to attach. If 3 arguments are provided // (methodName, objOrFunc, funcName), objOrFunc must be the scope to // locate the bound function in // funcName: String? // optional. A string naming the function in objOrFunc to bind to the // event. May also be a function reference. // example: // add an onclick handler to every button on the page // | query("div:nth-child(odd)").connect("onclick", function(e){ // | console.log("clicked!"); // | }); // example: // attach foo.bar() to every odd div's onmouseover // | query("div:nth-child(odd)").connect("onmouseover", foo, "bar"); return null; // NodeList }; =====*/ nlp.coords = NodeList._adaptAsMap(dojo.coords); /*===== nlp.coords = function(){ // summary: // Deprecated: Use position() for border-box x/y/w/h // or marginBox() for margin-box w/h/l/t. // Returns the box objects of all elements in a node list as // an Array (*not* a NodeList). Acts like `domGeom.coords`, though assumes // the node passed is each node in this list. return []; // Array }; =====*/ NodeList.events = [ // summary: // list of all DOM events used in NodeList "blur", "focus", "change", "click", "error", "keydown", "keypress", "keyup", "load", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseout", "mouseover", "mouseup", "submit" ]; // FIXME: pseudo-doc the above automatically generated on-event functions // syntactic sugar for DOM events array.forEach(NodeList.events, function(evt){ var _oe = "on" + evt; nlp[_oe] = function(a, b){ return this.connect(_oe, a, b); }; // FIXME: should these events trigger publishes? /* return (a ? this.connect(_oe, a, b) : this.forEach(function(n){ // FIXME: // listeners get buried by // addEventListener and can't be dug back // out to be triggered externally. // see: // http://developer.mozilla.org/en/docs/DOM:element console.log(n, evt, _oe); // FIXME: need synthetic event support! var _e = { target: n, faux: true, type: evt }; // dojo._event_listener._synthesizeEvent({}, { target: n, faux: true, type: evt }); try{ n[evt](_e); }catch(e){ console.log(e); } try{ n[_oe](_e); }catch(e){ console.log(e); } }) ); */ } ); dojo.NodeList = NodeList; return NodeList; });