r2959 commited - Position: refactored .offset() setter.
Revision: 2959
Author: scott.gonzalez
Date: Wed Jul 22 19:26:32 2009
Log: Position: refactored .offset() setter.
http://code.google.com/p/jquery-ui/source/detail?r=2959
Modified:
/branches/dev/positionTo/ui/ui.position.js
=======================================
--- /branches/dev/positionTo/ui/ui.position.js Thu Jul 9 06:15:23 2009
+++ /branches/dev/positionTo/ui/ui.position.js Wed Jul 22 19:26:32 2009
@@ -176,62 +176,50 @@
// the following functionality is planned for jQuery 1.4
-// copied from http://plugins.jquery.com/files/offset.js.txt
+// based on http://plugins.jquery.com/files/offset.js.txt
$.fn.extend({
-
- /**
- * Stores the original version of offset(), so that we don't lose it
- */
- _offset : $.fn.offset,
-
- /**
- * Set or get the specific left and top position of the matched
- * elements, relative the the browser window by calling setXY
- * @param {Object} newOffset
- */
- offset : function(newOffset){
- return !newOffset ? this._offset() : this.each(function(){
- var el = this;
-
- var hide = false;
-
- if($(el).css('display')=='none'){
+ _offset: $.fn.offset,
+ offset: function(newOffset) {
+ return !newOffset ? this._offset() : this.each(function() {
+ var elem = $(this),
+ isRelative = /relative|static/.test(elem.css('position')),
+ hide = false;
+
+ // covert static to relative
+ (isRelative && elem.css('position', 'relative'));
+ if (elem.css('display') == 'none') {
hide = true;
- $(el).show();
- };
-
- var style_pos = $(el).css('position');
-
- // default to relative
- if (style_pos == 'static') {
- $(el).css('position','relative');
- style_pos = 'relative';
- };
-
- var offset = $(el).offset();
-
- if (offset){
- var delta = {
- left : parseInt($(el).css('left'), 10),
- top: parseInt($(el).css('top'), 10)
+ elem.show();
+ }
+
+ var offset = elem.offset(),
+ delta = {
+ left : parseInt(elem.css('left'), 10),
+ top: parseInt(elem.css('top'), 10)
};
-
- // in case of 'auto'
- if (isNaN(delta.left))
- delta.left = (style_pos == 'relative') ? 0 : el.offsetLeft;
- if (isNaN(delta.top))
- delta.top = (style_pos == 'relative') ? 0 : el.offsetTop;
-
- if (newOffset.left || newOffset.left===0)
- $(el).css('left',newOffset.left - offset.left + delta.left + 'px');
-
- if (newOffset.top || newOffset.top===0)
- $(el).css('top',newOffset.top - offset.top + delta.top + 'px');
- };
- if(hide) $(el).hide();
+
+ // in case of 'auto'
+ delta.left = !isNaN(delta.left)
+ ? delta.left
+ : isRelative
+ ? 0
+ : this.offsetLeft;
+ delta.top = !isNaN(delta.top)
+ ? delta.top
+ : isRelative
+ ? 0
+ : this.offsetTop;
+
+ if (newOffset.left || newOffset.left === 0) {
+ elem.css('left', newOffset.left - offset.left + delta.left);
+ }
+ if (newOffset.top || newOffset.top === 0) {
+ elem.css('top', newOffset.top - offset.top + delta.top);
+ }
+
+ (hide && elem.hide());
});
}
-
});
})(jQuery);