Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/jquery/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ var arr = [],
splice = arr.splice,
class2type = {},

// Matches dashed string for camelizing
rmsPrefix = /^-ms-/,
rdashAlpha = /-([a-z])/g,

// Require that the "whitespace run" starts from a non-whitespace
// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
Expand Down Expand Up @@ -85,6 +89,26 @@ migratePatchAndWarnFunc( jQuery, "isWindow",
"jQuery.isWindow() is removed"
);

migratePatchAndWarnFunc( jQuery, "now", Date.now, "now",
"jQuery.now() is removed; use Date.now()"
);

// Used by camelCase as callback to replace()
function fcamelCase( _all, letter ) {
return letter.toUpperCase();
}

migratePatchAndWarnFunc( jQuery, "camelCase",
function( string ) {

// Convert dashed to camelCase; used by the css and data modules
// Support: IE <=9 - 11, Edge 12 - 15
// Microsoft forgot to hump their vendor prefix (trac-9572)
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
}, "camelCase",
"jQuery.camelCase() is removed"
);

// Bind a function to a context, optionally partially applying any
// arguments.
// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
Expand Down
29 changes: 29 additions & 0 deletions test/unit/jquery/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,35 @@ QUnit.test( "jQuery.isWindow", function( assert ) {
} );
} );

QUnit.test( "jQuery.now", function( assert ) {
assert.expect( 2 );

expectMessage( assert, "now", 1, function() {
assert.ok( typeof jQuery.now() === "number", "jQuery.now is a function" );
} );
} );

QUnit.test( "jQuery.camelCase()", function( assert ) {

var tests = {
"foo-bar": "fooBar",
"foo-bar-baz": "fooBarBaz",
"girl-u-want": "girlUWant",
"the-4th-dimension": "the-4thDimension",
"-o-tannenbaum": "OTannenbaum",
"-moz-illa": "MozIlla",
"-ms-take": "msTake"
};

assert.expect( 8 );

expectMessage( assert, "now", 7, function() {
jQuery.each( tests, function( key, val ) {
assert.equal( jQuery.camelCase( key ), val, "Converts: " + key + " => " + val );
} );
} );
} );

QUnit.test( "jQuery.unique", function( assert ) {
assert.expect( 2 );

Expand Down
12 changes: 12 additions & 0 deletions warnings.md
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,18 @@ This is _not_ a warning, but a console log message the plugin shows when it firs

**Solution:** Replace any calls to `jQuery.trim( text )` with `text.trim()` if you know `text` is a string; otherwise, you can replace it with `String.prototype.trim.call( text == null ? "" : text )`.

### \[now\] JQMIGRATE: jQuery.now() is removed; use Date.now

**Cause:** The `jQuery.now()` method was a simple alias for `Date.now()`, which is now supported in all browsers supported by jQuery 4.0.

**Solution:** Replace any calls to `jQuery.now()` with `Date.now()`.

### \[camelCase\] JQMIGRATE: jQuery.camelCase() is removed

**Cause:** The `jQuery.camelCase()` method was a utility to convert dashed strings like `"background-color"` into camel-cased strings like `"backgroundColor"`. This method was never documented and is removed as of jQuery 4.0.

**Solution:** Use a custom utility.

### \[css-number\] JQMIGRATE: Auto-appending 'px' to number-typed values for jQuery.fn.css( _(property name)_, value ) is removed

**Cause:** In past versions, when a number-typed value was passed to `.css()` jQuery converted it to a string and added `"px"` to the end. As the CSS standard has evolved, an increasingly large set of CSS properties now accept values that are unitless numbers, where this behavior is incorrect. It has become impractical to manage these exceptions in the `jQuery.cssNumber` object. In addition, some CSS properties like `line-height` can accept both a bare number `2` or a pixel value `2px`. jQuery cannot know the correct way to interpret `$.css("line-height", 2)` and currently treats it as `"2px"`.
Expand Down
Loading