// vim: et:ts=4:sw=4:sts=4:ft=javascript 'use strict'; /*@ Ox.JQueryElement Wrapper for jQuery # Usage ($element) -> Wrapped jQuery DOM element # Arguments $element jQuery DOM Element @*/ // fixme: now that children(), find() work, change code to call find directly. Ox.JQueryElement = function($element) { var that = this; //@ id Unique id that.id = Ox.uid(); // fixme: rename to oxid! //@ ox OxJS version that.ox = Ox.VERSION; // fixme: remove! //@ $element The jQuery-wrapped DOM element that.$element = $element.data({ oxid: that.id }); // FIXME: the following two lines should make it possible to do // $('
').appendTo($element) ... check if it works, then replace all //@ 0 The DOM element that[0] = that.$element[0]; //@ length 1 (for compatibility with jQuery) that.length = 1; Ox.UI.elements[that.id] = that; return that; }; // add all jQuery functions to the prototype of Ox.JQueryElement Ox.forEach($('
'), function(val, key) { if (Ox.isFunction(val)) { Ox.JQueryElement.prototype[key] = function() { var args = arguments, id, ret, that = this; Ox.forEach(args, function(arg, i) { // FIXME: with the changes above, is this still needed? // if an ox object was passed // then pass its $element instead // so that we can do oxObj.jqFn(oxObj) if (arg && arg.ox) { args[i] = arg.$element; } }); ret = that.$element[key].apply(that.$element, args); // if exactly one $element of an ox object was returned // then return the ox object instead // so that we can do oxObj.jqFn().oxFn() return ret && ret.jquery && ret.length == 1 && Ox.UI.elements[id = ret.data('oxid')] ? Ox.UI.elements[id] : ret; }; } }, true);