@@ -57,11 +57,16 @@ return $.widget( "ui.selectable", $.ui.mouse, {
57
57
58
58
// Cache selectee children based on filter
59
59
this . refresh = function ( ) {
60
+ that . elementPos = $ ( that . element [ 0 ] ) . offset ( ) ;
60
61
that . selectees = $ ( that . options . filter , that . element [ 0 ] ) ;
61
62
that . _addClass ( that . selectees , "ui-selectee" ) ;
62
63
that . selectees . each ( function ( ) {
63
64
var $this = $ ( this ) ,
64
- pos = $this . offset ( ) ;
65
+ selecteeOffset = $this . offset ( ) ,
66
+ pos = {
67
+ left : selecteeOffset . left - that . elementPos . left ,
68
+ top : selecteeOffset . top - that . elementPos . top
69
+ } ;
65
70
$ . data ( this , "selectable-item" , {
66
71
element : this ,
67
72
$element : $this ,
@@ -94,6 +99,7 @@ return $.widget( "ui.selectable", $.ui.mouse, {
94
99
options = this . options ;
95
100
96
101
this . opos = [ event . pageX , event . pageY ] ;
102
+ this . elementPos = $ ( this . element [ 0 ] ) . offset ( ) ;
97
103
98
104
if ( this . options . disabled ) {
99
105
return ;
@@ -183,19 +189,25 @@ return $.widget( "ui.selectable", $.ui.mouse, {
183
189
184
190
this . selectees . each ( function ( ) {
185
191
var selectee = $ . data ( this , "selectable-item" ) ,
186
- hit = false ;
192
+ hit = false ,
193
+ offset = { } ;
187
194
188
195
//prevent helper from being selected if appendTo: selectable
189
196
if ( ! selectee || selectee . element === that . element [ 0 ] ) {
190
197
return ;
191
198
}
192
199
200
+ offset . left = selectee . left + that . elementPos . left ;
201
+ offset . right = selectee . right + that . elementPos . left ;
202
+ offset . top = selectee . top + that . elementPos . top ;
203
+ offset . bottom = selectee . bottom + that . elementPos . top ;
204
+
193
205
if ( options . tolerance === "touch" ) {
194
- hit = ( ! ( selectee . left > x2 || selectee . right < x1 || selectee . top > y2 ||
195
- selectee . bottom < y1 ) ) ;
206
+ hit = ( ! ( offset . left > x2 || offset . right < x1 || offset . top > y2 ||
207
+ offset . bottom < y1 ) ) ;
196
208
} else if ( options . tolerance === "fit" ) {
197
- hit = ( selectee . left > x1 && selectee . right < x2 && selectee . top > y1 &&
198
- selectee . bottom < y2 ) ;
209
+ hit = ( offset . left > x1 && offset . right < x2 && offset . top > y1 &&
210
+ offset . bottom < y2 ) ;
199
211
}
200
212
201
213
if ( hit ) {
0 commit comments