Commit Graph

91 Commits

Author SHA1 Message Date
Michał Gołębiowski-Owczarek
c1ee33aded
Selector: Remove the "a:enabled" workaround for Chrome <=77
Remove the workaround for a broken `:enabled` pseudo-class on anchor elements
in Chrome <=77. These versions of Chrome considers anchor elements with the
`href` attribute as matching `:enabled`.

Closes gh-4569
2019-12-16 19:43:38 +01:00
Michał Gołębiowski-Owczarek
05184cc448
Selector: Make empty attribute selectors work in IE again
qSA in IE 11/Edge often (but not always) don't find elements with an empty
name attribute selector (`[name=""]`). Detect that & fall back to Sizzle
traversal.

Interestingly, IE 10 & older don't seem to have the issue.

Fixes gh-4435
Closes gh-4510
2019-11-18 22:10:55 +01:00
Michał Gołębiowski-Owczarek
d0ce00cdfa
Core: Migrate from AMD to ES modules 🎉
Migrate all source AMD modules to ECMAScript modules. The final bundle
is compiled by a custom build process that uses Rollup under the hood.

Test files themselves are still loaded via RequireJS as that has to work in
IE 11.

Tests can now be run in "Load as modules" mode which replaces the previous
"Load with AMD" option. That option of running tests doesn't work in IE
and Edge as it requires support for dynamic imports.

Some of the changes required by the migration:
* check `typeof` of `noGlobal` instead of using the variable directly
  as it's not available when modules are used
* change the nonce module to be an object as ECMASscript module exports
  are immutable
* remove some unused exports
* import `./core/parseHTML.js` directly in `jquery.js` so that it's not
  being cut out when the `ajax` module is excluded in a custom compilation

Closes gh-4541
2019-11-18 21:15:03 +01:00
Michał Gołębiowski-Owczarek
15750b0af2
Selector: Use shallow document comparisons in uniqueSort
IE/Edge sometimes crash when comparing documents between frames using the strict
equality operator (`===` & `!==`). Funnily enough, shallow comparisons
(`==` & `!=`) work without crashing.

The change to shallow comparisons in `src/selector.js` was done in gh-4471 but
relevant changes in `src/selector/uniqueSort.js` were missed. Those changes
have landed in Sizzle in jquery/sizzle#459.

Fixes gh-4441
Closes gh-4512
Ref gh-4471
Ref jquery/sizzle#459
2019-10-21 19:04:48 +02:00
Michał Gołębiowski-Owczarek
b59107f5d7
Core: Remove private copies of push, sort & splice from the jQuery prototype
Closes gh-4473
2019-09-24 02:12:36 +02:00
Michał Gołębiowski-Owczarek
29a9544a4f
Selector: reduce size, simplify setDocument
With new selector code doing less convoluted support tests, it was possible
to extract a lot of logic out of setDocument & also reduce size.

This commit also backports jquery/sizzle#439 that was reverted by mistake
during a switch from JSHint + JSCS to ESLint.

Closes gh-4462
Ref jquery/sizzle#442
Ref jquery/sizzle#439
2019-08-26 19:15:53 +02:00
Michał Gołębiowski-Owczarek
df6a7f7f0f
Selector: Leverage the :scope pseudo-class where possible
The `:scope` pseudo-class[1] has surprisingly good browser support: Chrome,
Firefox & Safari have supported if for a long time; only IE & Edge lack support.
This commit leverages this pseudo-class to get rid of the ID hack in most cases.
Adding a temporary ID may cause layout thrashing which was reported a few times
in [the past.

We can't completely eliminate the ID hack in modern browses as sibling selectors
require us to change context to the parent and then `:scope` stops applying to
what we'd like. But it'd still improve performance in the vast majority of
cases.

[1] https://developer.mozilla.org/en-US/docs/Web/CSS/:scope

Fixes gh-4453
Closes gh-4454
Ref gh-4332
Ref jquery/sizzle#405
2019-08-19 18:41:03 +02:00
Michał Gołębiowski-Owczarek
47835965bd Selector: Inline Sizzle into the selector module
This commit removes Sizzle from jQuery, inlining its code & removing obsolete
workarounds where applicable.

The selector-native module has been removed. Further work on the selector
module may decrease the size enough that it will no longer be necessary. If
it turns out it's still useful, we'll reinstate it but the code will look
different anyway as we'll want to share as much code as possible with
the existing selector module.

The Sizzle AUTHORS.txt file has been merged with the jQuery one - people are
sorted by their first contributions to either of the two repositories.

The commit reduces the gzipped jQuery size by 1460 bytes compared to master.

Closes gh-4395
2019-07-29 21:19:21 +02:00
John Resig
b4e23b5af0 Reorganzing the jQuery source (first phase). 2007-09-08 12:42:32 +00:00
John Resig
13b66c8ba9 Added a new :animated selector - only selects elements that are currently being animated. 2007-09-08 12:33:06 +00:00
John Resig
f96bf10415 Integration of Mike Alsup's excellent form serialization code. The benefits are as follows:
- New method: .serializeArray()
This returns an array of name/value pairs representing the contents of a form, or individual input elements.
- Enhancement: .serialize()
The results are correct now (as opposed to the mess from before), and allows you to serializes forms directly (rather than just the input elements).
- Enhancement: .val()
This now returns the correct value when dealing wih selects. Additionally, when dealing with multiple selects, it returns an array of values.

Based upon Mike's code:
http://malsup.com/jquery/form/comp/form.js

and test suite:
http://malsup.com/jquery/form/comp/test.html
2007-09-05 17:06:05 +00:00
John Resig
53dc6afc31 Removed all deprecated functionality for jQuery 1.2. A full list of what was removed can be found here: http://jquery.com/blog/2007/08/24/jquery-114-faster-more-tests-ready-for-12/ 2007-09-04 02:55:38 +00:00
John Resig
139393fe09 Removed all inline documentation. The current version of all documentation is stored online, on the wiki: http://docs.jquery.com/ 2007-09-04 01:57:35 +00:00
John Resig
346ceacce3 Added support for a new :header psuedo-selector (only selects H1-H6 elements). 2007-08-31 05:43:24 +00:00
John Resig
127c0b8a5d Fixed the issue where $("body").find("div#foo") would ignore the specified tag name. (Bug #1543) 2007-08-27 04:58:02 +00:00
John Resig
257eaf7ee3 Marked all the appropriate methods as being deprecated for the 1.1.4 release (in preparation for 1.2). 2007-08-24 01:28:07 +00:00
John Resig
f2f399dcd5 Fixed use of eval() and new Function() to work within the correct scope (and not throw errors). 2007-08-22 06:19:22 +00:00
John Resig
46e770352a Added the new :has() selector (Bug #1521) 2007-08-21 07:33:52 +00:00
John Resig
b6d920cf05 Fix for a selector speed regression (calling a simple selector many times resulted in a significant speed down). This has been fixed by breaking the RegExps out into the global scope. This required that a closure be implemented around the full jQuery script (which is now the case). Some simple changes were made in addition to the RegExp one, allowing for some greater flexibility on our part - and hopefully better compression.
Speed results:
http://dev.jquery.com/~john/ticket/1351/ vs.
http://dev.jquery.com/~john/ticket/1351/113.html vs.
http://dev.jquery.com/~john/ticket/1351/112.html
2007-08-21 05:43:44 +00:00
John Resig
24db022ba0 Added a fix for IE returning comment nodes in * queries. I put the logic in $.merge() but added a conditional such that the speed hit only effects IE users. (Bug #1155) 2007-08-19 07:28:41 +00:00
John Resig
660490e6f4 The test for underscore selectors broke under Opera, so the element is now loaded via Ajax and tested. (bug #1084) 2007-07-30 02:52:24 +00:00
John Resig
3c82f8fb4a Added a fix for Safari's broken CSS getComputedStyle accessing. Additionally, added a fix for Safari mis-reporting @selected for display: none options. The test suite is now completely passing in Safari 3. (Bug #1349) 2007-07-29 22:32:06 +00:00
John Resig
80a149b828 Integrated the custom fx test suite into the main test suite. All tests are now run automatically. Removed the old suite, as it was no longer needed. 2007-07-29 19:07:21 +00:00
John Resig
f8b00051c3 $("#foo", xml) would always return an empty set, fixed (bug #877). Additionally, a bug in jQuery.isXMLDoc(xmlDoc) was discovered, if the element was, in fact, an XML document. 2007-07-25 00:56:50 +00:00
John Resig
bdf05d890f Added a fix for relative // - $("//div",this) (bug #1418) 2007-07-25 00:39:45 +00:00
John Resig
97a6bdbaba Added a fix for h1 + h2 not working. (Bug #1361) 2007-07-20 23:43:12 +00:00
John Resig
bdb5dad8e5 Final fix for Safari crasher (bug #1331). 2007-07-06 13:36:38 +00:00
John Resig
2278b24f70 Fix for Safari 1.3 crash (bug #1331). 2007-07-05 20:40:44 +00:00
Ed Engelhardt
28a80202b3 fix little typo in comment 2007-07-05 08:18:25 +00:00
John Resig
6f064fc9c5 Added fix for broken child selectors in XML documents, bug #1346. 2007-07-05 02:45:01 +00:00
John Resig
38d74fe912 Added a fix for bug #1331, which caused Safari 1.3 to crash. 2007-07-04 16:15:09 +00:00
John Resig
fa7bfcfd78 Fixed bug that prevented $= from working on elements that didn't have the specified attribute. 2007-07-04 16:10:26 +00:00
John Resig
ea98b16438 Who am I kidding |= is useless. 2007-06-29 21:52:45 +00:00
John Resig
e7a8310f65 Added minor support for |= and ~= selectors. 2007-06-29 21:43:22 +00:00
John Resig
88c88f0704 Added fix for :nth-child(n). 2007-06-29 21:08:46 +00:00
John Resig
7b9d825890 Added fix for broken :only-child. 2007-06-29 21:03:27 +00:00
John Resig
614706bbf2 Added extra last-child test. 2007-06-29 20:26:14 +00:00
John Resig
fd249ca808 Added massive speed improvements to selectors. Also added support for :nth-child(An+B) syntax. 2007-06-29 19:52:38 +00:00
Brandon Aaron
7c6100f5ed Fix for #1169 2007-05-13 17:20:03 +00:00
John Resig
7fa12b412b Rev [1827] broke the two XPath sibling selectors. 2007-05-01 21:36:01 +00:00
John Resig
c512984303 We're not adding new selector features in until a new full release. Please discuss features like this in the dev mailing list, and in the bug tracker, before committing code. 2007-05-01 21:31:26 +00:00
Corey Jewett
2e448273f5 TDD. Broken test case, need to fix xpath parser... 2007-04-30 17:31:51 +00:00
John Resig
74a8e20623 Query now throws no warnings under strict mode in Firefox (ticket #922). In fixing this, revision [1771] was discovered and reverted (no API changes are being added in at this time), and a couple un-functioning test cases were fixed (array comparisions were being done for objects). 2007-04-29 18:39:07 +00:00
John Resig
e95a6cc746 Forgot to remove the test cases for XPath [n]. (Ticket #995) 2007-04-28 15:45:38 +00:00
John Resig
09a2e48f45 Removed support for the XPath [n] - we weren't doing it right, and it would actually require a lot of code to "do it right" (much more than what the feature is immediately worth). See ticket #995. 2007-04-28 15:43:18 +00:00
John Resig
fce2bdf7ff Added support for finding elements that have underscores in their name (along with other allowed characters). Fix for ticket #1084. 2007-04-28 15:39:30 +00:00
Corey Jewett
2fac5e7949 Add RegExp style xpath attributes and testcases. e.g. [@foo =~ /bar/i] and [@foo !~ /bar/] 2007-04-13 17:48:04 +00:00
John Resig
9c94ef4c41 Added a number of additional speed gains (we now hold our own against Dojo and DOMQuery), touched up some of the selector code, fixed some minor bugs, fixed a bug with triggerEvent in Opera, fixed some more test case bugs. 2007-03-26 02:06:50 +00:00
John Resig
3446c3af76 Opera is also vulnerable to the getElementById-returning-name issue, fixed it there as well. Also had to tweak the UTF8 regexps to work in Safari (Safari doesn't support \uXXXX in RegExps, lame.) 2007-03-25 20:30:16 +00:00
John Resig
9c7f8ba90e Fixed some more bugs with the test suite, made some minor file size tweaks to the selector code. 2007-03-25 19:02:31 +00:00