@@ -37,7 +37,7 @@ var QueryString = function(key) {
37
37
38
38
$ ( document ) . ready ( function ( ) {
39
39
// Clicking #doc-title returns the user to the root package
40
- $ ( "#doc-title" ) . click ( function ( ) { document . location = toRoot + "index.html" } ) ;
40
+ $ ( "#doc-title" ) . on ( "click" , function ( ) { document . location = toRoot + "index.html" } ) ;
41
41
42
42
scheduler = new Scheduler ( ) ;
43
43
scheduler . addLabel ( "init" , 1 ) ;
@@ -107,26 +107,36 @@ function handleKeyNavigation() {
107
107
} ;
108
108
} ;
109
109
110
+ function safeOffset ( $elem ) {
111
+ return $elem . length ? $elem . offset ( ) : { top :0 , left :0 } ; // offset relative to viewport
112
+ }
113
+
110
114
/** Scroll helper, ensures that the selected elem is inside the viewport */
111
115
var Scroller = function ( $container ) {
112
116
scroller = this ;
113
117
scroller . container = $container ;
114
118
115
119
scroller . scrollDown = function ( $elem ) {
116
- var yPos = $elem . offset ( ) . top ; // offset relative to viewport
117
- if ( $container . height ( ) < yPos || ( yPos - $ ( "#search" ) . height ( ) ) < 0 ) {
118
- $container . animate ( {
119
- scrollTop : $container . scrollTop ( ) + yPos - $ ( "#search" ) . height ( ) - 10
120
- } , 200 ) ;
120
+ var offset = safeOffset ( $elem ) ;
121
+ if ( offset !== undefined ) {
122
+ var yPos = offset . top ;
123
+ if ( $container . height ( ) < yPos || ( yPos - $ ( "#search" ) . height ( ) ) < 0 ) {
124
+ $container . animate ( {
125
+ scrollTop : $container . scrollTop ( ) + yPos - $ ( "#search" ) . height ( ) - 10
126
+ } , 200 ) ;
127
+ }
121
128
}
122
129
} ;
123
130
124
131
scroller . scrollUp = function ( $elem ) {
125
- var yPos = $elem . offset ( ) . top ; // offset relative to viewport
126
- if ( yPos < $ ( "#search" ) . height ( ) ) {
127
- $container . animate ( {
128
- scrollTop : $container . scrollTop ( ) + yPos - $ ( "#search" ) . height ( ) - 10
129
- } , 200 ) ;
132
+ var offset = safeOffset ( $elem ) ;
133
+ if ( offset !== undefined ) {
134
+ var yPos = offset . top ;
135
+ if ( yPos < $ ( "#search" ) . height ( ) ) {
136
+ $container . animate ( {
137
+ scrollTop : $container . scrollTop ( ) + yPos - $ ( "#search" ) . height ( ) - 10
138
+ } , 200 ) ;
139
+ }
130
140
}
131
141
} ;
132
142
@@ -138,7 +148,7 @@ function handleKeyNavigation() {
138
148
} ;
139
149
140
150
scheduler . add ( "init" , function ( ) {
141
- $ ( "#textfilter input" ) . blur ( ) ;
151
+ $ ( "#textfilter input" ) . trigger ( "blur" ) ;
142
152
var items = new EntityIterator (
143
153
$ ( "div#results-content > div#entity-results > ul.entities span.entity > a" ) . toArray ( ) ,
144
154
$ ( "div#results-content > div#member-results > ul.entities span.entity > a" ) . toArray ( )
@@ -150,7 +160,7 @@ function handleKeyNavigation() {
150
160
$old . addClass ( "selected" ) ;
151
161
scroller . scrollDown ( $old ) ;
152
162
153
- $ ( window ) . bind ( "keydown" , function ( e ) {
163
+ $ ( window ) . on ( "keydown" , function ( e ) {
154
164
switch ( e . keyCode ) {
155
165
case 9 : // tab
156
166
$old . removeClass ( "selected" ) ;
@@ -159,33 +169,33 @@ function handleKeyNavigation() {
159
169
case 13 : // enter
160
170
var href = $old . attr ( "href" ) ;
161
171
location . replace ( href ) ;
162
- $old . click ( ) ;
163
- $ ( "#textfilter input" ) . attr ( "value" , "" ) ;
172
+ $old . trigger ( "click" ) ;
173
+ $ ( "#textfilter input" ) . val ( "" ) ;
164
174
break ;
165
175
166
176
case 27 : // escape
167
- $ ( "#textfilter input" ) . attr ( "value" , "" ) ;
177
+ $ ( "#textfilter input" ) . val ( "" ) ;
168
178
$ ( "div#search-results" ) . hide ( ) ;
169
179
$ ( "#search > span.close-results" ) . hide ( ) ;
170
180
$ ( "#search > span#doc-title" ) . show ( ) ;
171
181
break ;
172
182
173
183
case 37 : // left
174
- var oldTop = $old . offset ( ) . top ;
184
+ var oldTop = safeOffset ( $old ) . top ;
175
185
$old . removeClass ( "selected" ) ;
176
186
$old = items . left ( ) ;
177
187
$old . addClass ( "selected" ) ;
178
188
179
- ( oldTop - $old . offset ( ) . top < 0 ? scroller . scrollDown : scroller . scrollUp ) ( $old ) ;
189
+ ( oldTop - safeOffset ( $old ) . top < 0 ? scroller . scrollDown : scroller . scrollUp ) ( $old ) ;
180
190
break ;
181
191
182
192
case 38 : // up
183
193
$old . removeClass ( 'selected' ) ;
184
194
$old = items . prev ( ) ;
185
195
186
196
if ( $old === undefined ) { // scroll past top
187
- $ ( window ) . unbind ( "keydown" ) ;
188
- $ ( "#textfilter input" ) . focus ( ) ;
197
+ $ ( window ) . off ( "keydown" ) ;
198
+ $ ( "#textfilter input" ) . trigger ( "focus" ) ;
189
199
scroller . scrollTop ( ) ;
190
200
return false ;
191
201
} else {
@@ -195,12 +205,12 @@ function handleKeyNavigation() {
195
205
break ;
196
206
197
207
case 39 : // right
198
- var oldTop = $old . offset ( ) . top ;
208
+ var oldTop = safeOffset ( $old ) . top ;
199
209
$old . removeClass ( "selected" ) ;
200
210
$old = items . right ( ) ;
201
211
$old . addClass ( "selected" ) ;
202
212
203
- ( oldTop - $old . offset ( ) . top < 0 ? scroller . scrollDown : scroller . scrollUp ) ( $old ) ;
213
+ ( oldTop - safeOffset ( $old ) . top < 0 ? scroller . scrollDown : scroller . scrollUp ) ( $old ) ;
204
214
break ;
205
215
206
216
case 40 : // down
@@ -218,10 +228,10 @@ function handleKeyNavigation() {
218
228
function configureTextFilter ( ) {
219
229
scheduler . add ( "init" , function ( ) {
220
230
var input = $ ( "#textfilter input" ) ;
221
- input . bind ( 'keyup' , function ( event ) {
231
+ input . on ( 'keyup' , function ( event ) {
222
232
switch ( event . keyCode ) {
223
233
case 27 : // escape
224
- input . attr ( "value" , "" ) ;
234
+ input . val ( "" ) ;
225
235
$ ( "div#search-results" ) . hide ( ) ;
226
236
$ ( "#search > span.close-results" ) . hide ( ) ;
227
237
$ ( "#search > span#doc-title" ) . show ( ) ;
@@ -231,7 +241,7 @@ function configureTextFilter() {
231
241
return false ;
232
242
233
243
case 40 : // down arrow
234
- $ ( window ) . unbind ( "keydown" ) ;
244
+ $ ( window ) . off ( "keydown" ) ;
235
245
handleKeyNavigation ( ) ;
236
246
return false ;
237
247
}
@@ -240,8 +250,8 @@ function configureTextFilter() {
240
250
} ) ;
241
251
} ) ;
242
252
scheduler . add ( "init" , function ( ) {
243
- $ ( "#textfilter > .input > .clear" ) . click ( function ( ) {
244
- $ ( "#textfilter input" ) . attr ( "value" , "" ) ;
253
+ $ ( "#textfilter > .input > .clear" ) . on ( "click" , function ( ) {
254
+ $ ( "#textfilter input" ) . val ( "" ) ;
245
255
$ ( "div#search-results" ) . hide ( ) ;
246
256
$ ( "#search > span.close-results" ) . hide ( ) ;
247
257
$ ( "#search > span#doc-title" ) . show ( ) ;
@@ -251,11 +261,11 @@ function configureTextFilter() {
251
261
} ) ;
252
262
253
263
scheduler . add ( "init" , function ( ) {
254
- $ ( "div#search > span.close-results" ) . click ( function ( ) {
264
+ $ ( "div#search > span.close-results" ) . on ( "click" , function ( ) {
255
265
$ ( "div#search-results" ) . hide ( ) ;
256
266
$ ( "#search > span.close-results" ) . hide ( ) ;
257
267
$ ( "#search > span#doc-title" ) . show ( ) ;
258
- $ ( "#textfilter input" ) . attr ( "value" , "" ) ;
268
+ $ ( "#textfilter input" ) . val ( "" ) ;
259
269
} ) ;
260
270
} ) ;
261
271
}
@@ -525,7 +535,7 @@ function listItem(entity, regExp) {
525
535
function searchAll ( ) {
526
536
scheduler . clear ( "search" ) ; // clear previous search
527
537
maxJobs = 1 ; // clear previous max
528
- var searchStr = $ ( "#textfilter input" ) . attr ( "value" ) . trim ( ) || '' ;
538
+ var searchStr = ( $ ( "#textfilter input" ) . val ( ) || '' ) . trim ( ) ;
529
539
530
540
if ( searchStr === '' ) {
531
541
$ ( "div#search-results" ) . hide ( ) ;
@@ -555,10 +565,12 @@ function searchAll() {
555
565
entityH1 . innerHTML = "Entity results" ;
556
566
entityResults . appendChild ( entityH1 ) ;
557
567
558
- $ ( "div#results-content" )
559
- . prepend ( "<span class='search-text'>"
560
- + " Showing results for <span class='query-str'>\"" + searchStr + "\"</span>"
561
- + "</span>" ) ;
568
+ $ ( "div#results-content" ) . prepend (
569
+ $ ( "<span>" )
570
+ . addClass ( "search-text" )
571
+ . append ( document . createTextNode ( " Showing results for " ) )
572
+ . append ( $ ( "<span>" ) . addClass ( "query-str" ) . text ( searchStr ) )
573
+ ) ;
562
574
563
575
var regExp = compilePattern ( searchStr ) ;
564
576
0 commit comments