15
15
return ! ! ( 'ontouchstart' in window ) || ! ! ( 'onmsgesturechange' in window ) ;
16
16
} ;
17
17
18
+ var handlers = { } ;
19
+
20
+ var addHandler = function ( name , fn ) {
21
+ win . on ( name , fn ) ;
22
+ handlers [ name ] = fn ;
23
+ } ;
24
+ var removeHandler = function ( name , fn ) {
25
+ win . off ( name , handlers [ name ] ) ;
26
+ delete handlers [ name ] ;
27
+ } ;
28
+ var removeHandlers = function ( ) {
29
+ for ( var name in handlers ) {
30
+ removeHandler ( name ) ;
31
+ }
32
+ } ;
18
33
19
34
var methods = {
20
35
64
79
65
80
if ( ! hasTouch ( ) ) {
66
81
if ( settings . scrollWheelSelected === true ) {
67
- win . on ( 'mousewheel' , function ( event , delta ) {
82
+ addHandler ( 'mousewheel' , function ( event , delta ) {
68
83
methods . onScroll ( $this , settings , delta ) ;
69
- } ) ;
84
+ } )
70
85
} else {
71
- win . on ( 'scroll' , function ( ) {
86
+ addHandler ( 'scroll' , function ( ) {
72
87
methods . onScroll ( $this , settings ) ;
73
88
} ) ;
74
89
}
75
90
} else {
76
91
var lastY = 0 ,
77
92
swipe = 0 ;
78
- win . on ( 'touchstart' , function ( e ) {
93
+ addHandler ( 'touchstart' , function ( e ) {
79
94
lastY = e . originalEvent . touches [ 0 ] . pageY ;
80
95
} ) ;
81
96
82
- win . on ( 'touchmove' , function ( e ) {
97
+ addHandler ( 'touchmove' , function ( e ) {
83
98
swipe = e . originalEvent . touches [ 0 ] . pageY + lastY ;
84
99
st = $ ( this ) . scrollTop ( ) ;
85
100
92
107
}
93
108
} ) ;
94
109
95
- win . on ( 'touchend' , function ( ) {
110
+ addHandler ( 'touchend' , function ( ) {
96
111
swipe = 0 ;
97
112
} ) ;
98
113
}
143
158
} ,
144
159
145
160
destroy : function ( ) {
161
+ removeHandlers ( ) ;
146
162
return $ ( this ) . each ( function ( ) {
147
163
var $this = $ ( this ) ;
148
164
168
184
return method . apply ( this , arguments ) ;
169
185
} ;
170
186
171
- } ) ( jQuery , window , document ) ;
187
+ } ) ( jQuery , window , document ) ;
0 commit comments