Ticket #4377: 4377-offsetparent.patch

File 4377-offsetparent.patch, 1.9 KB (added by Scott González, 13 years ago)
  • Users/sgonzale/Documents/workspace/jQuery

     
    7171                if (this.options.disabled)
    7272                        return;
    7373
    74                 var options = this.options;
     74                var options = this.options,
     75                        appendTo = $(options.appendTo),
     76                        parentOffset = appendTo.css('position') == 'static'
     77                                ? appendTo.offsetParent().offset()
     78                                : appendTo.offset();
    7579
    7680                this.selectees = $(options.filter, this.element[0]);
    7781
     
    7781
    7882                this._trigger("start", event);
    7983
    80                 $(options.appendTo).append(this.helper);
     84                appendTo.append(this.helper);
    8185                // position helper (lasso)
    8286                this.helper.css({
    8387                        "z-index": 100,
     
    8286                this.helper.css({
    8387                        "z-index": 100,
    8488                        "position": "absolute",
    85                         "left": event.clientX,
    86                         "top": event.clientY,
     89                        "left": event.clientX-parentOffset.left,
     90                        "top": event.clientY-parentOffset.top,
    8791                        "width": 0,
    8892                        "height": 0
    8993                });
     
    133137
    134138                var options = this.options;
    135139
    136                 var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY;
     140                var x1 = this.opos[0], y1 = this.opos[1], x2 = event.pageX, y2 = event.pageY,
     141                        appendTo = $(options.appendTo),
     142                        parentOffset = appendTo.css('position') == 'static'
     143                                ? appendTo.offsetParent().offset()
     144                                : appendTo.offset();
     145
    137146                if (x1 > x2) { var tmp = x2; x2 = x1; x1 = tmp; }
    138147                if (y1 > y2) { var tmp = y2; y2 = y1; y1 = tmp; }
    139                 this.helper.css({left: x1, top: y1, width: x2-x1, height: y2-y1});
     148                this.helper.css({
     149                        left: x1-parentOffset.left,
     150                        top: y1-parentOffset.top,
     151                        width: x2-x1,
     152                        height: y2-y1
     153                });
    140154
    141155                this.selectees.each(function() {
    142156                        var selectee = $.data(this, "selectable-item");