blob: c11b0d3324509759df54cac6bfe14f8ddb0a1bb1 [file] [log] [blame]
Copybara botbe50d492023-11-30 00:16:42 +01001define( [
2 "./core",
3 "./core/nodeName",
4 "./core/camelCase",
5 "./core/toType",
6 "./var/isFunction",
7 "./var/isWindow",
8 "./var/slice",
9
10 "./event/alias"
11], function( jQuery, nodeName, camelCase, toType, isFunction, isWindow, slice ) {
12
13"use strict";
14
15jQuery.fn.extend( {
16
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 },
23
24 delegate: function( selector, types, data, fn ) {
25 return this.on( types, selector, data, fn );
26 },
27 undelegate: function( selector, types, fn ) {
28
29 // ( namespace ) or ( selector, types [, fn] )
30 return arguments.length === 1 ?
31 this.off( selector, "**" ) :
32 this.off( types, selector || "**", fn );
33 }
34} );
35
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
40jQuery.proxy = function( fn, context ) {
41 var tmp, args, proxy;
42
43 if ( typeof context === "string" ) {
44 tmp = fn[ context ];
45 context = fn;
46 fn = tmp;
47 }
48
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 }
54
55 // Simulated bind
56 args = slice.call( arguments, 2 );
57 proxy = function() {
58 return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
59 };
60
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++;
63
64 return proxy;
65};
66
67jQuery.holdReady = function( hold ) {
68 if ( hold ) {
69 jQuery.readyWait++;
70 } else {
71 jQuery.ready( true );
72 }
73};
74jQuery.isArray = Array.isArray;
75jQuery.parseJSON = JSON.parse;
76jQuery.nodeName = nodeName;
77jQuery.isFunction = isFunction;
78jQuery.isWindow = isWindow;
79jQuery.camelCase = camelCase;
80jQuery.type = toType;
81
82jQuery.now = Date.now;
83
84jQuery.isNumeric = function( obj ) {
85
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" ) &&
91
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 ) );
96};
97
98} );