11/*!
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
54 */
65( function ( jQuery , window , undefined ) {
76// See http://bugs.jquery.com/ticket/13335
87// "use strict";
98
109
10+ jQuery . migrateVersion = "1.3.0" ;
11+
12+
1113var warnedAbout = { } ;
1214
1315// List of warnings already given; public read only
@@ -152,7 +154,7 @@ jQuery.attr = function( elem, name, value, pass ) {
152154
153155 // Warn only for attributes that can remain distinct from their properties post-1.9
154156 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" ) ;
156158 }
157159 }
158160
@@ -190,22 +192,24 @@ jQuery.attrHooks.value = {
190192var matched , browser ,
191193 oldInit = jQuery . fn . init ,
192194 oldParseJSON = jQuery . parseJSON ,
195+ rspaceAngle = / ^ \s * < / ,
193196 // Note: XSS check is done below after string is trimmed
194197 rquickExpr = / ^ ( [ ^ < ] * ) ( < [ \w \W ] + > ) ( [ ^ > ] * ) $ / ;
195198
196199// $(html) "looks like html" rule change
197200jQuery . fn . init = function ( selector , context , rootjQuery ) {
198- var match ;
201+ var match , ret ;
199202
200203 if ( selector && typeof selector === "string" && ! jQuery . isPlainObject ( context ) &&
201204 ( match = rquickExpr . exec ( jQuery . trim ( selector ) ) ) && match [ 0 ] ) {
202205 // This is an HTML string according to the "old" rules; is it still?
203- if ( selector . charAt ( 0 ) !== "<" ) {
206+ if ( ! rspaceAngle . test ( selector ) ) {
204207 migrateWarn ( "$(html) HTML strings must start with '<' character" ) ;
205208 }
206209 if ( match [ 3 ] ) {
207210 migrateWarn ( "$(html) HTML text after last tag is ignored" ) ;
208211 }
212+
209213 // Consistently reject any HTML-like string starting with a hash (#9521)
210214 // Note that this may break jQuery 1.6.x code that otherwise would work.
211215 if ( match [ 0 ] . charAt ( 0 ) === "#" ) {
@@ -218,17 +222,40 @@ jQuery.fn.init = function( selector, context, rootjQuery ) {
218222 context = context . context ;
219223 }
220224 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 ;
223249 }
224250 }
225- return oldInit . apply ( this , arguments ) ;
251+
252+ return ret ;
226253} ;
227254jQuery . fn . init . prototype = jQuery . fn ;
228255
229256// Let $.parseJSON(falsy_value) return null
230257jQuery . parseJSON = function ( json ) {
231- if ( ! json && json !== null ) {
258+ if ( ! json ) {
232259 migrateWarn ( "jQuery.parseJSON requires a valid JSON string" ) ;
233260 return null ;
234261 }
@@ -274,6 +301,11 @@ if ( !jQuery.browser ) {
274301// Warn if the code tries to get jQuery.browser
275302migrateWarnProp ( jQuery , "browser" , jQuery . browser , "jQuery.browser is deprecated" ) ;
276303
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+
277309jQuery . sub = function ( ) {
278310 function jQuerySub ( selector , context ) {
279311 return new jQuerySub . fn . init ( selector , context ) ;
@@ -284,18 +316,68 @@ jQuery.sub = function() {
284316 jQuerySub . fn . constructor = jQuerySub ;
285317 jQuerySub . sub = this . sub ;
286318 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 ) ;
292323 } ;
293324 jQuerySub . fn . init . prototype = jQuerySub . fn ;
294325 var rootjQuerySub = jQuerySub ( document ) ;
295326 migrateWarn ( "jQuery.sub() is deprecated" ) ;
296327 return jQuerySub ;
297328} ;
298329
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+
299381
300382// Ensure that $.ajax gets the new parseJSON defined in core.js
301383jQuery . ajaxSetup ( {
@@ -324,13 +406,7 @@ jQuery.fn.data = function( name ) {
324406} ;
325407
326408
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;
334410
335411// Since jQuery.clean is used internally on older versions, we only shim if it's missing
336412if ( ! jQuery . clean ) {
@@ -388,6 +464,7 @@ var eventAdd = jQuery.event.add,
388464 oldToggle = jQuery . fn . toggle ,
389465 oldLive = jQuery . fn . live ,
390466 oldDie = jQuery . fn . die ,
467+ oldLoad = jQuery . fn . load ,
391468 ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess" ,
392469 rajaxEvent = new RegExp ( "\\b(?:" + ajaxEvents + ")\\b" ) ,
393470 rhoverHack = / (?: ^ | \s ) h o v e r ( \. \S + | ) \b / ,
@@ -422,17 +499,34 @@ jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
422499 eventRemove . call ( this , elem , hoverHack ( types ) || "" , handler , selector , mappedTypes ) ;
423500} ;
424501
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+ } ) ;
436530
437531jQuery . fn . toggle = function ( fn , fn2 ) {
438532
@@ -501,7 +595,7 @@ jQuery.each( ajaxEvents.split("|"),
501595 // The document needs no shimming; must be !== for oldIE
502596 if ( elem !== document ) {
503597 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 ) ;
505599 } ) ;
506600 jQuery . _data ( this , name , jQuery . guid ++ ) ;
507601 }
@@ -517,5 +611,92 @@ jQuery.each( ajaxEvents.split("|"),
517611 }
518612) ;
519613
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+ }
520701
521702} ) ( jQuery , window ) ;
0 commit comments