1
1
/*!
2
- * jQuery Migrate - v1.2.1 - 2013-05-08
3
- * https://github.com/jquery/jquery-migrate
4
- * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
2
+ * jQuery Migrate - v1.3.0 - 2016-01-13
3
+ * Copyright jQuery Foundation and other contributors
5
4
*/
6
5
( function ( jQuery , window , undefined ) {
7
6
// See http://bugs.jquery.com/ticket/13335
8
7
// "use strict";
9
8
10
9
10
+ jQuery . migrateVersion = "1.3.0" ;
11
+
12
+
11
13
var warnedAbout = { } ;
12
14
13
15
// List of warnings already given; public read only
@@ -152,7 +154,7 @@ jQuery.attr = function( elem, name, value, pass ) {
152
154
153
155
// Warn only for attributes that can remain distinct from their properties post-1.9
154
156
if ( ruseDefault . test ( lowerName ) ) {
155
- migrateWarn ( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" ) ;
157
+ migrateWarn ( "jQuery.fn.attr('" + lowerName + "') might use property instead of attribute" ) ;
156
158
}
157
159
}
158
160
@@ -190,22 +192,24 @@ jQuery.attrHooks.value = {
190
192
var matched , browser ,
191
193
oldInit = jQuery . fn . init ,
192
194
oldParseJSON = jQuery . parseJSON ,
195
+ rspaceAngle = / ^ \s * < / ,
193
196
// Note: XSS check is done below after string is trimmed
194
197
rquickExpr = / ^ ( [ ^ < ] * ) ( < [ \w \W ] + > ) ( [ ^ > ] * ) $ / ;
195
198
196
199
// $(html) "looks like html" rule change
197
200
jQuery . fn . init = function ( selector , context , rootjQuery ) {
198
- var match ;
201
+ var match , ret ;
199
202
200
203
if ( selector && typeof selector === "string" && ! jQuery . isPlainObject ( context ) &&
201
204
( match = rquickExpr . exec ( jQuery . trim ( selector ) ) ) && match [ 0 ] ) {
202
205
// This is an HTML string according to the "old" rules; is it still?
203
- if ( selector . charAt ( 0 ) !== "<" ) {
206
+ if ( ! rspaceAngle . test ( selector ) ) {
204
207
migrateWarn ( "$(html) HTML strings must start with '<' character" ) ;
205
208
}
206
209
if ( match [ 3 ] ) {
207
210
migrateWarn ( "$(html) HTML text after last tag is ignored" ) ;
208
211
}
212
+
209
213
// Consistently reject any HTML-like string starting with a hash (#9521)
210
214
// Note that this may break jQuery 1.6.x code that otherwise would work.
211
215
if ( match [ 0 ] . charAt ( 0 ) === "#" ) {
@@ -218,17 +222,40 @@ jQuery.fn.init = function( selector, context, rootjQuery ) {
218
222
context = context . context ;
219
223
}
220
224
if ( jQuery . parseHTML ) {
221
- return oldInit . call ( this , jQuery . parseHTML ( match [ 2 ] , context , true ) ,
222
- context , rootjQuery ) ;
225
+ return oldInit . call ( this ,
226
+ jQuery . parseHTML ( match [ 2 ] , context && context . ownerDocument ||
227
+ context || document , true ) , context , rootjQuery ) ;
228
+ }
229
+ }
230
+
231
+ // jQuery( "#" ) is a bogus ID selector, but it returned an empty set before jQuery 3.0
232
+ if ( selector === "#" ) {
233
+ migrateWarn ( "jQuery( '#' ) is not a valid selector" ) ;
234
+ selector = [ ] ;
235
+ }
236
+
237
+ ret = oldInit . apply ( this , arguments ) ;
238
+
239
+ // Fill in selector and context properties so .live() works
240
+ if ( selector && selector . selector !== undefined ) {
241
+ // A jQuery object, copy its properties
242
+ ret . selector = selector . selector ;
243
+ ret . context = selector . context ;
244
+
245
+ } else {
246
+ ret . selector = typeof selector === "string" ? selector : "" ;
247
+ if ( selector ) {
248
+ ret . context = selector . nodeType ? selector : context || document ;
223
249
}
224
250
}
225
- return oldInit . apply ( this , arguments ) ;
251
+
252
+ return ret ;
226
253
} ;
227
254
jQuery . fn . init . prototype = jQuery . fn ;
228
255
229
256
// Let $.parseJSON(falsy_value) return null
230
257
jQuery . parseJSON = function ( json ) {
231
- if ( ! json && json !== null ) {
258
+ if ( ! json ) {
232
259
migrateWarn ( "jQuery.parseJSON requires a valid JSON string" ) ;
233
260
return null ;
234
261
}
@@ -274,6 +301,11 @@ if ( !jQuery.browser ) {
274
301
// Warn if the code tries to get jQuery.browser
275
302
migrateWarnProp ( jQuery , "browser" , jQuery . browser , "jQuery.browser is deprecated" ) ;
276
303
304
+ // jQuery.boxModel deprecated in 1.3, jQuery.support.boxModel deprecated in 1.7
305
+ jQuery . boxModel = jQuery . support . boxModel = ( document . compatMode === "CSS1Compat" ) ;
306
+ migrateWarnProp ( jQuery , "boxModel" , jQuery . boxModel , "jQuery.boxModel is deprecated" ) ;
307
+ migrateWarnProp ( jQuery . support , "boxModel" , jQuery . support . boxModel , "jQuery.support.boxModel is deprecated" ) ;
308
+
277
309
jQuery . sub = function ( ) {
278
310
function jQuerySub ( selector , context ) {
279
311
return new jQuerySub . fn . init ( selector , context ) ;
@@ -284,18 +316,68 @@ jQuery.sub = function() {
284
316
jQuerySub . fn . constructor = jQuerySub ;
285
317
jQuerySub . sub = this . sub ;
286
318
jQuerySub . fn . init = function init ( selector , context ) {
287
- if ( context && context instanceof jQuery && ! ( context instanceof jQuerySub ) ) {
288
- context = jQuerySub ( context ) ;
289
- }
290
-
291
- return jQuery . fn . init . call ( this , selector , context , rootjQuerySub ) ;
319
+ var instance = jQuery . fn . init . call ( this , selector , context , rootjQuerySub ) ;
320
+ return instance instanceof jQuerySub ?
321
+ instance :
322
+ jQuerySub ( instance ) ;
292
323
} ;
293
324
jQuerySub . fn . init . prototype = jQuerySub . fn ;
294
325
var rootjQuerySub = jQuerySub ( document ) ;
295
326
migrateWarn ( "jQuery.sub() is deprecated" ) ;
296
327
return jQuerySub ;
297
328
} ;
298
329
330
+ // The number of elements contained in the matched element set
331
+ jQuery . fn . size = function ( ) {
332
+ migrateWarn ( "jQuery.fn.size() is deprecated; use the .length property" ) ;
333
+ return this . length ;
334
+ } ;
335
+
336
+
337
+ var internalSwapCall = false ;
338
+
339
+ // If this version of jQuery has .swap(), don't false-alarm on internal uses
340
+ if ( jQuery . swap ) {
341
+ jQuery . each ( [ "height" , "width" , "reliableMarginRight" ] , function ( _ , name ) {
342
+ var oldHook = jQuery . cssHooks [ name ] && jQuery . cssHooks [ name ] . get ;
343
+
344
+ if ( oldHook ) {
345
+ jQuery . cssHooks [ name ] . get = function ( ) {
346
+ var ret ;
347
+
348
+ internalSwapCall = true ;
349
+ ret = oldHook . apply ( this , arguments ) ;
350
+ internalSwapCall = false ;
351
+ return ret ;
352
+ } ;
353
+ }
354
+ } ) ;
355
+ }
356
+
357
+ jQuery . swap = function ( elem , options , callback , args ) {
358
+ var ret , name ,
359
+ old = { } ;
360
+
361
+ if ( ! internalSwapCall ) {
362
+ migrateWarn ( "jQuery.swap() is undocumented and deprecated" ) ;
363
+ }
364
+
365
+ // Remember the old values, and insert the new ones
366
+ for ( name in options ) {
367
+ old [ name ] = elem . style [ name ] ;
368
+ elem . style [ name ] = options [ name ] ;
369
+ }
370
+
371
+ ret = callback . apply ( elem , args || [ ] ) ;
372
+
373
+ // Revert the old values
374
+ for ( name in options ) {
375
+ elem . style [ name ] = old [ name ] ;
376
+ }
377
+
378
+ return ret ;
379
+ } ;
380
+
299
381
300
382
// Ensure that $.ajax gets the new parseJSON defined in core.js
301
383
jQuery . ajaxSetup ( {
@@ -324,13 +406,7 @@ jQuery.fn.data = function( name ) {
324
406
} ;
325
407
326
408
327
- var rscriptType = / \/ ( j a v a | e c m a ) s c r i p t / i,
328
- oldSelf = jQuery . fn . andSelf || jQuery . fn . addBack ;
329
-
330
- jQuery . fn . andSelf = function ( ) {
331
- migrateWarn ( "jQuery.fn.andSelf() replaced by jQuery.fn.addBack()" ) ;
332
- return oldSelf . apply ( this , arguments ) ;
333
- } ;
409
+ var rscriptType = / \/ ( j a v a | e c m a ) s c r i p t / i;
334
410
335
411
// Since jQuery.clean is used internally on older versions, we only shim if it's missing
336
412
if ( ! jQuery . clean ) {
@@ -388,6 +464,7 @@ var eventAdd = jQuery.event.add,
388
464
oldToggle = jQuery . fn . toggle ,
389
465
oldLive = jQuery . fn . live ,
390
466
oldDie = jQuery . fn . die ,
467
+ oldLoad = jQuery . fn . load ,
391
468
ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess" ,
392
469
rajaxEvent = new RegExp ( "\\b(?:" + ajaxEvents + ")\\b" ) ,
393
470
rhoverHack = / (?: ^ | \s ) h o v e r ( \. \S + | ) \b / ,
@@ -422,17 +499,34 @@ jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
422
499
eventRemove . call ( this , elem , hoverHack ( types ) || "" , handler , selector , mappedTypes ) ;
423
500
} ;
424
501
425
- jQuery . fn . error = function ( ) {
426
- var args = Array . prototype . slice . call ( arguments , 0 ) ;
427
- migrateWarn ( "jQuery.fn.error() is deprecated" ) ;
428
- args . splice ( 0 , 0 , "error" ) ;
429
- if ( arguments . length ) {
430
- return this . bind . apply ( this , args ) ;
431
- }
432
- // error event should not bubble to window, although it does pre-1.7
433
- this . triggerHandler . apply ( this , args ) ;
434
- return this ;
435
- } ;
502
+ jQuery . each ( [ "load" , "unload" , "error" ] , function ( _ , name ) {
503
+
504
+ jQuery . fn [ name ] = function ( ) {
505
+ var args = Array . prototype . slice . call ( arguments , 0 ) ;
506
+ migrateWarn ( "jQuery.fn." + name + "() is deprecated" ) ;
507
+
508
+ // If this is an ajax load() the first arg should be the string URL;
509
+ // technically this could also be the "Anything" arg of the event .load()
510
+ // which just goes to show why this dumb signature has been deprecated!
511
+ // jQuery custom builds that exclude the Ajax module justifiably die here.
512
+ if ( name === "load" && typeof arguments [ 0 ] === "string" ) {
513
+ return oldLoad . apply ( this , arguments ) ;
514
+ }
515
+
516
+ args . splice ( 0 , 0 , name ) ;
517
+ if ( arguments . length ) {
518
+ return this . bind . apply ( this , args ) ;
519
+ }
520
+
521
+ // Use .triggerHandler here because:
522
+ // - load and unload events don't need to bubble, only applied to window or image
523
+ // - error event should not bubble to window, although it does pre-1.7
524
+ // See http://bugs.jquery.com/ticket/11820
525
+ this . triggerHandler . apply ( this , args ) ;
526
+ return this ;
527
+ } ;
528
+
529
+ } ) ;
436
530
437
531
jQuery . fn . toggle = function ( fn , fn2 ) {
438
532
@@ -501,7 +595,7 @@ jQuery.each( ajaxEvents.split("|"),
501
595
// The document needs no shimming; must be !== for oldIE
502
596
if ( elem !== document ) {
503
597
jQuery . event . add ( document , name + "." + jQuery . guid , function ( ) {
504
- jQuery . event . trigger ( name , null , elem , true ) ;
598
+ jQuery . event . trigger ( name , Array . prototype . slice . call ( arguments , 1 ) , elem , true ) ;
505
599
} ) ;
506
600
jQuery . _data ( this , name , jQuery . guid ++ ) ;
507
601
}
@@ -517,5 +611,92 @@ jQuery.each( ajaxEvents.split("|"),
517
611
}
518
612
) ;
519
613
614
+ jQuery . event . special . ready = {
615
+ setup : function ( ) { migrateWarn ( "'ready' event is deprecated" ) ; }
616
+ } ;
617
+
618
+ var oldSelf = jQuery . fn . andSelf || jQuery . fn . addBack ,
619
+ oldFind = jQuery . fn . find ;
620
+
621
+ jQuery . fn . andSelf = function ( ) {
622
+ migrateWarn ( "jQuery.fn.andSelf() replaced by jQuery.fn.addBack()" ) ;
623
+ return oldSelf . apply ( this , arguments ) ;
624
+ } ;
625
+
626
+ jQuery . fn . find = function ( selector ) {
627
+ var ret = oldFind . apply ( this , arguments ) ;
628
+ ret . context = this . context ;
629
+ ret . selector = this . selector ? this . selector + " " + selector : selector ;
630
+ return ret ;
631
+ } ;
632
+
633
+
634
+ // jQuery 1.6 did not support Callbacks, do not warn there
635
+ if ( jQuery . Callbacks ) {
636
+
637
+ var oldDeferred = jQuery . Deferred ,
638
+ tuples = [
639
+ // action, add listener, callbacks, .then handlers, final state
640
+ [ "resolve" , "done" , jQuery . Callbacks ( "once memory" ) ,
641
+ jQuery . Callbacks ( "once memory" ) , "resolved" ] ,
642
+ [ "reject" , "fail" , jQuery . Callbacks ( "once memory" ) ,
643
+ jQuery . Callbacks ( "once memory" ) , "rejected" ] ,
644
+ [ "notify" , "progress" , jQuery . Callbacks ( "memory" ) ,
645
+ jQuery . Callbacks ( "memory" ) ]
646
+ ] ;
647
+
648
+ jQuery . Deferred = function ( func ) {
649
+ var deferred = oldDeferred ( ) ,
650
+ promise = deferred . promise ( ) ;
651
+
652
+ deferred . pipe = promise . pipe = function ( /* fnDone, fnFail, fnProgress */ ) {
653
+ var fns = arguments ;
654
+
655
+ migrateWarn ( "deferred.pipe() is deprecated" ) ;
656
+
657
+ return jQuery . Deferred ( function ( newDefer ) {
658
+ jQuery . each ( tuples , function ( i , tuple ) {
659
+ var fn = jQuery . isFunction ( fns [ i ] ) && fns [ i ] ;
660
+ // deferred.done(function() { bind to newDefer or newDefer.resolve })
661
+ // deferred.fail(function() { bind to newDefer or newDefer.reject })
662
+ // deferred.progress(function() { bind to newDefer or newDefer.notify })
663
+ deferred [ tuple [ 1 ] ] ( function ( ) {
664
+ var returned = fn && fn . apply ( this , arguments ) ;
665
+ if ( returned && jQuery . isFunction ( returned . promise ) ) {
666
+ returned . promise ( )
667
+ . done ( newDefer . resolve )
668
+ . fail ( newDefer . reject )
669
+ . progress ( newDefer . notify ) ;
670
+ } else {
671
+ newDefer [ tuple [ 0 ] + "With" ] (
672
+ this === promise ? newDefer . promise ( ) : this ,
673
+ fn ? [ returned ] : arguments
674
+ ) ;
675
+ }
676
+ } ) ;
677
+ } ) ;
678
+ fns = null ;
679
+ } ) . promise ( ) ;
680
+
681
+ } ;
682
+
683
+ deferred . isResolved = function ( ) {
684
+ migrateWarn ( "deferred.isResolved is deprecated" ) ;
685
+ return deferred . state ( ) === "resolved" ;
686
+ } ;
687
+
688
+ deferred . isRejected = function ( ) {
689
+ migrateWarn ( "deferred.isRejected is deprecated" ) ;
690
+ return deferred . state ( ) === "rejected" ;
691
+ } ;
692
+
693
+ if ( func ) {
694
+ func . call ( deferred , deferred ) ;
695
+ }
696
+
697
+ return deferred ;
698
+ } ;
699
+
700
+ }
520
701
521
702
} ) ( jQuery , window ) ;
0 commit comments