Event: Fix handling of multiple async focus events
[jquery.git] / src / deprecated.js
blobc11b0d3324509759df54cac6bfe14f8ddb0a1bb1
1 define( [
2         "./core",
3         "./core/nodeName",
4         "./core/camelCase",
5         "./core/toType",
6         "./var/isFunction",
7         "./var/isWindow",
8         "./var/slice",
10         "./event/alias"
11 ], function( jQuery, nodeName, camelCase, toType, isFunction, isWindow, slice ) {
13 "use strict";
15 jQuery.fn.extend( {
17         bind: function( types, data, fn ) {
18                 return this.on( types, null, data, fn );
19         },
20         unbind: function( types, fn ) {
21                 return this.off( types, null, fn );
22         },
24         delegate: function( selector, types, data, fn ) {
25                 return this.on( types, selector, data, fn );
26         },
27         undelegate: function( selector, types, fn ) {
29                 // ( namespace ) or ( selector, types [, fn] )
30                 return arguments.length === 1 ?
31                         this.off( selector, "**" ) :
32                         this.off( types, selector || "**", fn );
33         }
34 } );
36 // Bind a function to a context, optionally partially applying any
37 // arguments.
38 // jQuery.proxy is deprecated to promote standards (specifically Function#bind)
39 // However, it is not slated for removal any time soon
40 jQuery.proxy = function( fn, context ) {
41         var tmp, args, proxy;
43         if ( typeof context === "string" ) {
44                 tmp = fn[ context ];
45                 context = fn;
46                 fn = tmp;
47         }
49         // Quick check to determine if target is callable, in the spec
50         // this throws a TypeError, but we will just return undefined.
51         if ( !isFunction( fn ) ) {
52                 return undefined;
53         }
55         // Simulated bind
56         args = slice.call( arguments, 2 );
57         proxy = function() {
58                 return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
59         };
61         // Set the guid of unique handler to the same of original handler, so it can be removed
62         proxy.guid = fn.guid = fn.guid || jQuery.guid++;
64         return proxy;
67 jQuery.holdReady = function( hold ) {
68         if ( hold ) {
69                 jQuery.readyWait++;
70         } else {
71                 jQuery.ready( true );
72         }
74 jQuery.isArray = Array.isArray;
75 jQuery.parseJSON = JSON.parse;
76 jQuery.nodeName = nodeName;
77 jQuery.isFunction = isFunction;
78 jQuery.isWindow = isWindow;
79 jQuery.camelCase = camelCase;
80 jQuery.type = toType;
82 jQuery.now = Date.now;
84 jQuery.isNumeric = function( obj ) {
86         // As of jQuery 3.0, isNumeric is limited to
87         // strings and numbers (primitives or objects)
88         // that can be coerced to finite numbers (gh-2662)
89         var type = jQuery.type( obj );
90         return ( type === "number" || type === "string" ) &&
92                 // parseFloat NaNs numeric-cast false positives ("")
93                 // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
94                 // subtraction forces infinities to NaN
95                 !isNaN( obj - parseFloat( obj ) );
98 } );