'use strict'; /*@ Ox.JQueryElement Wrapper for jQuery $element jQuery DOM Element ($element) -> Wrapped jQuery DOM element @*/ Ox.JQueryElement = function($element) { //@ id Unique id this.oxid = Ox.uid(); //@ $element The jQuery-wrapped DOM element this.$element = $element .attr({'data-oxid': this.oxid}) .data({oxid: this.oxid}); //@ 0 The DOM element (for compatibility with jQuery) this[0] = this.$element[0]; //@ length 1 (for compatibility with jQuery) this.length = 1; Ox.UI.elements[this.oxid] = this; return this; }; // add all jQuery methods to the prototype of Ox.JQueryElement Ox.methods($('
'), true).forEach(function(method) { Ox.JQueryElement.prototype[method] = function() { var $element = this.$element[method].apply(this.$element, arguments), oxid; // 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 $element && $element.jquery && $element.length == 1 && Ox.UI.elements[oxid = $element.data('oxid')] ? Ox.UI.elements[oxid] : $element; }; });