mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
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
This commit is contained in:
parent
79b74e043a
commit
47835965bd
6
.mailmap
6
.mailmap
@ -4,6 +4,8 @@ Alexander Farkas <info@corrupt-system.de>
|
|||||||
Alexander Farkas <info@corrupt-system.de> <a.farkas.pm@googlemail.com>
|
Alexander Farkas <info@corrupt-system.de> <a.farkas.pm@googlemail.com>
|
||||||
Alexis Abril <me@alexisabril.com> <alexis.abril@gmail.com>
|
Alexis Abril <me@alexisabril.com> <alexis.abril@gmail.com>
|
||||||
Andrew E Monat <amonat@gmail.com>
|
Andrew E Monat <amonat@gmail.com>
|
||||||
|
Andrey Meshkov <ay.meshkov@gmail.com>
|
||||||
|
Andrey Meshkov <ay.meshkov@gmail.com> <am@adguard.com>
|
||||||
Anton Matzneller <obhvsbypqghgc@gmail.com>
|
Anton Matzneller <obhvsbypqghgc@gmail.com>
|
||||||
Anton Matzneller <obhvsbypqghgc@gmail.com> <haskell_noob-github@yahoo.de>
|
Anton Matzneller <obhvsbypqghgc@gmail.com> <haskell_noob-github@yahoo.de>
|
||||||
Batiste Bieler <batiste.bieler@gmail.com>
|
Batiste Bieler <batiste.bieler@gmail.com>
|
||||||
@ -13,6 +15,8 @@ Carl Danley <carldanley@gmail.com>
|
|||||||
Carl Fürstenberg <azatoth@gmail.com>
|
Carl Fürstenberg <azatoth@gmail.com>
|
||||||
Carl Fürstenberg <azatoth@gmail.com> <carl@excito.com>
|
Carl Fürstenberg <azatoth@gmail.com> <carl@excito.com>
|
||||||
Charles McNulty <cmcnulty@kznf.com>
|
Charles McNulty <cmcnulty@kznf.com>
|
||||||
|
Chris Rebert <github@rebertia.com>
|
||||||
|
Chris Rebert <github@rebertia.com> <code@rebertia.com>
|
||||||
Christopher Jones <chris@cjqed.com> cjqed <christopherjonesqed@gmail.com>
|
Christopher Jones <chris@cjqed.com> cjqed <christopherjonesqed@gmail.com>
|
||||||
Colin Snover <github.com@zetafleet.com> <colin@alpha.zetafleet.com>
|
Colin Snover <github.com@zetafleet.com> <colin@alpha.zetafleet.com>
|
||||||
Corey Frang <gnarf37@gmail.com> <gnarf@gnarf.net>
|
Corey Frang <gnarf37@gmail.com> <gnarf@gnarf.net>
|
||||||
@ -52,6 +56,8 @@ Josh Varner <josh.varner@gmail.com> <josh.varner@gmail.com>
|
|||||||
Julian Aubourg <aubourg.julian@gmail.com>
|
Julian Aubourg <aubourg.julian@gmail.com>
|
||||||
Julian Aubourg <aubourg.julian@gmail.com> <j@ubourg.net>
|
Julian Aubourg <aubourg.julian@gmail.com> <j@ubourg.net>
|
||||||
Julian Aubourg <aubourg.julian@gmail.com> <Julian@.(none)>
|
Julian Aubourg <aubourg.julian@gmail.com> <Julian@.(none)>
|
||||||
|
John Firebaugh <john_firebaugh@bigfix.com>
|
||||||
|
John Firebaugh <john_firebaugh@bigfix.com> <john_firebaugh@us.ibm.com>
|
||||||
Jörn Zaefferer <joern.zaefferer@gmail.com>
|
Jörn Zaefferer <joern.zaefferer@gmail.com>
|
||||||
Jörn Zaefferer <joern.zaefferer@gmail.com> <joern.zaefferer@googlemail.com>
|
Jörn Zaefferer <joern.zaefferer@gmail.com> <joern.zaefferer@googlemail.com>
|
||||||
Jörn Zaefferer <joern.zaefferer@gmail.com> <JZA@.(none)>
|
Jörn Zaefferer <joern.zaefferer@gmail.com> <JZA@.(none)>
|
||||||
|
179
AUTHORS.txt
179
AUTHORS.txt
@ -20,16 +20,24 @@ David Serduke <davidserduke@gmail.com>
|
|||||||
Richard D. Worth <rdworth@gmail.com>
|
Richard D. Worth <rdworth@gmail.com>
|
||||||
Scott González <scott.gonzalez@gmail.com>
|
Scott González <scott.gonzalez@gmail.com>
|
||||||
Ariel Flesler <aflesler@gmail.com>
|
Ariel Flesler <aflesler@gmail.com>
|
||||||
|
Cheah Chu Yeow <chuyeow@gmail.com>
|
||||||
|
Andrew Chalkley <andrew@chalkley.org>
|
||||||
|
Fabio Buffoni <fabio.buffoni@bitmaster.it>
|
||||||
|
Stefan Bauckmeier <stefan@bauckmeier.de>
|
||||||
Jon Evans <jon@springyweb.com>
|
Jon Evans <jon@springyweb.com>
|
||||||
TJ Holowaychuk <tj@vision-media.ca>
|
TJ Holowaychuk <tj@vision-media.ca>
|
||||||
|
Riccardo De Agostini <rdeago@gmail.com>
|
||||||
Michael Bensoussan <mickey@seesmic.com>
|
Michael Bensoussan <mickey@seesmic.com>
|
||||||
Robert Katić <robert.katic@gmail.com>
|
|
||||||
Louis-Rémi Babé <lrbabe@gmail.com>
|
Louis-Rémi Babé <lrbabe@gmail.com>
|
||||||
Earle Castledine <mrspeaker@gmail.com>
|
Robert Katić <robert.katic@gmail.com>
|
||||||
Damian Janowski <damian.janowski@gmail.com>
|
Damian Janowski <damian.janowski@gmail.com>
|
||||||
|
Anton Kovalyov <anton@kovalyov.net>
|
||||||
|
Dušan B. Jovanovic <dbjdbj@gmail.com>
|
||||||
|
Earle Castledine <mrspeaker@gmail.com>
|
||||||
Rich Dougherty <rich@rd.gen.nz>
|
Rich Dougherty <rich@rd.gen.nz>
|
||||||
Kim Dalsgaard <kim@kimdalsgaard.com>
|
Kim Dalsgaard <kim@kimdalsgaard.com>
|
||||||
Andrea Giammarchi <andrea.giammarchi@gmail.com>
|
Andrea Giammarchi <andrea.giammarchi@gmail.com>
|
||||||
|
Fabian Jakobs <fabian.jakobs@web.de>
|
||||||
Mark Gibson <jollytoad@gmail.com>
|
Mark Gibson <jollytoad@gmail.com>
|
||||||
Karl Swedberg <kswedberg@gmail.com>
|
Karl Swedberg <kswedberg@gmail.com>
|
||||||
Justin Meyer <justinbmeyer@gmail.com>
|
Justin Meyer <justinbmeyer@gmail.com>
|
||||||
@ -37,9 +45,10 @@ Ben Alman <cowboy@rj3.net>
|
|||||||
James Padolsey <cla@padolsey.net>
|
James Padolsey <cla@padolsey.net>
|
||||||
David Petersen <public@petersendidit.com>
|
David Petersen <public@petersendidit.com>
|
||||||
Batiste Bieler <batiste.bieler@gmail.com>
|
Batiste Bieler <batiste.bieler@gmail.com>
|
||||||
|
Jake Archibald <jake.archibald@bbc.co.uk>
|
||||||
Alexander Farkas <info@corrupt-system.de>
|
Alexander Farkas <info@corrupt-system.de>
|
||||||
Rick Waldron <waldron.rick@gmail.com>
|
|
||||||
Filipe Fortes <filipe@fortes.com>
|
Filipe Fortes <filipe@fortes.com>
|
||||||
|
Rick Waldron <waldron.rick@gmail.com>
|
||||||
Neeraj Singh <neerajdotname@gmail.com>
|
Neeraj Singh <neerajdotname@gmail.com>
|
||||||
Paul Irish <paul.irish@gmail.com>
|
Paul Irish <paul.irish@gmail.com>
|
||||||
Iraê Carvalho <irae@irae.pro.br>
|
Iraê Carvalho <irae@irae.pro.br>
|
||||||
@ -47,23 +56,24 @@ Matt Curry <matt@pseudocoder.com>
|
|||||||
Michael Monteleone <michael@michaelmonteleone.net>
|
Michael Monteleone <michael@michaelmonteleone.net>
|
||||||
Noah Sloan <noah.sloan@gmail.com>
|
Noah Sloan <noah.sloan@gmail.com>
|
||||||
Tom Viner <github@viner.tv>
|
Tom Viner <github@viner.tv>
|
||||||
|
J. Ryan Stinnett <jryans@gmail.com>
|
||||||
Douglas Neiner <doug@dougneiner.com>
|
Douglas Neiner <doug@dougneiner.com>
|
||||||
Adam J. Sontag <ajpiano@ajpiano.com>
|
Adam J. Sontag <ajpiano@ajpiano.com>
|
||||||
|
Heungsub Lee <h@subl.ee>
|
||||||
Dave Reed <dareed@microsoft.com>
|
Dave Reed <dareed@microsoft.com>
|
||||||
Ralph Whitbeck <ralph.whitbeck@gmail.com>
|
|
||||||
Carl Fürstenberg <azatoth@gmail.com>
|
Carl Fürstenberg <azatoth@gmail.com>
|
||||||
Jacob Wright <jacwright@gmail.com>
|
Jacob Wright <jacwright@gmail.com>
|
||||||
J. Ryan Stinnett <jryans@gmail.com>
|
Ralph Whitbeck <ralph.whitbeck@gmail.com>
|
||||||
unknown <Igen005@.upcorp.ad.uprr.com>
|
unknown <Igen005@.upcorp.ad.uprr.com>
|
||||||
temp01 <temp01irc@gmail.com>
|
temp01 <temp01irc@gmail.com>
|
||||||
Heungsub Lee <h@subl.ee>
|
|
||||||
Colin Snover <github.com@zetafleet.com>
|
Colin Snover <github.com@zetafleet.com>
|
||||||
|
Jared Grippe <jared@deadlyicon.com>
|
||||||
Ryan W Tenney <ryan@10e.us>
|
Ryan W Tenney <ryan@10e.us>
|
||||||
|
Alex Sexton <AlexSexton@gmail.com>
|
||||||
Pinhook <contact@pinhooklabs.com>
|
Pinhook <contact@pinhooklabs.com>
|
||||||
Ron Otten <r.j.g.otten@gmail.com>
|
Ron Otten <r.j.g.otten@gmail.com>
|
||||||
Jephte Clain <Jephte.Clain@univ-reunion.fr>
|
Jephte Clain <Jephte.Clain@univ-reunion.fr>
|
||||||
Anton Matzneller <obhvsbypqghgc@gmail.com>
|
Anton Matzneller <obhvsbypqghgc@gmail.com>
|
||||||
Alex Sexton <AlexSexton@gmail.com>
|
|
||||||
Dan Heberden <danheberden@gmail.com>
|
Dan Heberden <danheberden@gmail.com>
|
||||||
Henri Wiechers <hwiechers@gmail.com>
|
Henri Wiechers <hwiechers@gmail.com>
|
||||||
Russell Holbrook <russell.holbrook@patch.com>
|
Russell Holbrook <russell.holbrook@patch.com>
|
||||||
@ -73,21 +83,19 @@ Scott Jehl <scottjehl@gmail.com>
|
|||||||
James Burke <jrburke@gmail.com>
|
James Burke <jrburke@gmail.com>
|
||||||
Jonas Pfenniger <jonas@pfenniger.name>
|
Jonas Pfenniger <jonas@pfenniger.name>
|
||||||
Xavi Ramirez <xavi.rmz@gmail.com>
|
Xavi Ramirez <xavi.rmz@gmail.com>
|
||||||
Jared Grippe <jared@deadlyicon.com>
|
|
||||||
Sylvester Keil <sylvester@keil.or.at>
|
Sylvester Keil <sylvester@keil.or.at>
|
||||||
Brandon Sterne <bsterne@mozilla.com>
|
Brandon Sterne <bsterne@mozilla.com>
|
||||||
Mathias Bynens <mathias@qiwi.be>
|
Mathias Bynens <mathias@qiwi.be>
|
||||||
|
Lee Carpenter <elcarpie@gmail.com>
|
||||||
Timmy Willison <4timmywil@gmail.com>
|
Timmy Willison <4timmywil@gmail.com>
|
||||||
Corey Frang <gnarf37@gmail.com>
|
Corey Frang <gnarf37@gmail.com>
|
||||||
Digitalxero <digitalxero>
|
Digitalxero <digitalxero>
|
||||||
Anton Kovalyov <anton@kovalyov.net>
|
|
||||||
David Murdoch <david@davidmurdoch.com>
|
David Murdoch <david@davidmurdoch.com>
|
||||||
Josh Varner <josh.varner@gmail.com>
|
Josh Varner <josh.varner@gmail.com>
|
||||||
Charles McNulty <cmcnulty@kznf.com>
|
Charles McNulty <cmcnulty@kznf.com>
|
||||||
Jordan Boesch <jboesch26@gmail.com>
|
Jordan Boesch <jboesch26@gmail.com>
|
||||||
Jess Thrysoee <jess@thrysoee.dk>
|
Jess Thrysoee <jess@thrysoee.dk>
|
||||||
Michael Murray <m@murz.net>
|
Michael Murray <m@murz.net>
|
||||||
Lee Carpenter <elcarpie@gmail.com>
|
|
||||||
Alexis Abril <me@alexisabril.com>
|
Alexis Abril <me@alexisabril.com>
|
||||||
Rob Morgan <robbym@gmail.com>
|
Rob Morgan <robbym@gmail.com>
|
||||||
John Firebaugh <john_firebaugh@bigfix.com>
|
John Firebaugh <john_firebaugh@bigfix.com>
|
||||||
@ -107,12 +115,13 @@ Timo Tijhof <krinklemail@gmail.com>
|
|||||||
Steen Nielsen <swinedk@gmail.com>
|
Steen Nielsen <swinedk@gmail.com>
|
||||||
Anton Ryzhov <anton@ryzhov.me>
|
Anton Ryzhov <anton@ryzhov.me>
|
||||||
Shi Chuan <shichuanr@gmail.com>
|
Shi Chuan <shichuanr@gmail.com>
|
||||||
|
Matt Mueller <mattmuelle@gmail.com>
|
||||||
Berker Peksag <berker.peksag@gmail.com>
|
Berker Peksag <berker.peksag@gmail.com>
|
||||||
Toby Brain <tobyb@freshview.com>
|
Toby Brain <tobyb@freshview.com>
|
||||||
Matt Mueller <mattmuelle@gmail.com>
|
|
||||||
Justin <drakefjustin@gmail.com>
|
Justin <drakefjustin@gmail.com>
|
||||||
Daniel Herman <daniel.c.herman@gmail.com>
|
Daniel Herman <daniel.c.herman@gmail.com>
|
||||||
Oleg Gaidarenko <markelog@gmail.com>
|
Oleg Gaidarenko <markelog@gmail.com>
|
||||||
|
Rock Hymas <rock@fogcreek.com>
|
||||||
Richard Gibson <richard.gibson@gmail.com>
|
Richard Gibson <richard.gibson@gmail.com>
|
||||||
Rafaël Blais Masson <rafbmasson@gmail.com>
|
Rafaël Blais Masson <rafbmasson@gmail.com>
|
||||||
cmc3cn <59194618@qq.com>
|
cmc3cn <59194618@qq.com>
|
||||||
@ -124,6 +133,7 @@ Andrew E Monat <amonat@gmail.com>
|
|||||||
Oskari <admin@o-programs.com>
|
Oskari <admin@o-programs.com>
|
||||||
Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
|
Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
|
||||||
tsinha <tsinha@Anthonys-MacBook-Pro.local>
|
tsinha <tsinha@Anthonys-MacBook-Pro.local>
|
||||||
|
Dominik D. Geyer <dominik.geyer@gmail.com>
|
||||||
Matt Farmer <matt@frmr.me>
|
Matt Farmer <matt@frmr.me>
|
||||||
Trey Hunner <treyhunner@gmail.com>
|
Trey Hunner <treyhunner@gmail.com>
|
||||||
Jason Moon <jmoon@socialcast.com>
|
Jason Moon <jmoon@socialcast.com>
|
||||||
@ -132,164 +142,180 @@ Kris Borchers <kris.borchers@gmail.com>
|
|||||||
Vladimir Zhuravlev <private.face@gmail.com>
|
Vladimir Zhuravlev <private.face@gmail.com>
|
||||||
Jacob Thornton <jacobthornton@gmail.com>
|
Jacob Thornton <jacobthornton@gmail.com>
|
||||||
Chad Killingsworth <chadkillingsworth@missouristate.edu>
|
Chad Killingsworth <chadkillingsworth@missouristate.edu>
|
||||||
|
Vitya Muhachev <vic99999@yandex.ru>
|
||||||
Nowres Rafid <nowres.rafed@gmail.com>
|
Nowres Rafid <nowres.rafed@gmail.com>
|
||||||
David Benjamin <davidben@mit.edu>
|
David Benjamin <davidben@mit.edu>
|
||||||
|
Alan Plum <github@ap.apsq.de>
|
||||||
Uri Gilad <antishok@gmail.com>
|
Uri Gilad <antishok@gmail.com>
|
||||||
Chris Faulkner <thefaulkner@gmail.com>
|
Chris Faulkner <thefaulkner@gmail.com>
|
||||||
|
Marcel Greter <marcel.greter@ocbnet.ch>
|
||||||
Elijah Manor <elijah.manor@gmail.com>
|
Elijah Manor <elijah.manor@gmail.com>
|
||||||
Daniel Chatfield <chatfielddaniel@gmail.com>
|
Daniel Chatfield <chatfielddaniel@gmail.com>
|
||||||
|
Daniel Gálvez <dgalvez@editablething.com>
|
||||||
Nikita Govorov <nikita.govorov@gmail.com>
|
Nikita Govorov <nikita.govorov@gmail.com>
|
||||||
Wesley Walser <waw325@gmail.com>
|
Wesley Walser <waw325@gmail.com>
|
||||||
Mike Pennisi <mike@mikepennisi.com>
|
Mike Pennisi <mike@mikepennisi.com>
|
||||||
|
Matthias Jäggli <matthias.jaeggli@gmail.com>
|
||||||
|
Devin Cooper <cooper.semantics@gmail.com>
|
||||||
Markus Staab <markus.staab@redaxo.de>
|
Markus Staab <markus.staab@redaxo.de>
|
||||||
Dave Riddle <david@joyvuu.com>
|
Dave Riddle <david@joyvuu.com>
|
||||||
Callum Macrae <callum@lynxphp.com>
|
Callum Macrae <callum@lynxphp.com>
|
||||||
|
Jonathan Sampson <jjdsampson@gmail.com>
|
||||||
Benjamin Truyman <bentruyman@gmail.com>
|
Benjamin Truyman <bentruyman@gmail.com>
|
||||||
|
Jay Merrifield <fracmak@gmail.com>
|
||||||
James Huston <james@jameshuston.net>
|
James Huston <james@jameshuston.net>
|
||||||
|
Sai Lung Wong <sai.wong@huffingtonpost.com>
|
||||||
Erick Ruiz de Chávez <erickrdch@gmail.com>
|
Erick Ruiz de Chávez <erickrdch@gmail.com>
|
||||||
David Bonner <dbonner@cogolabs.com>
|
David Bonner <dbonner@cogolabs.com>
|
||||||
|
Allen J Schmidt Jr <cobrasoft@gmail.com>
|
||||||
Akintayo Akinwunmi <aakinwunmi@judge.com>
|
Akintayo Akinwunmi <aakinwunmi@judge.com>
|
||||||
MORGAN <morgan@morgangraphics.com>
|
MORGAN <morgan@morgangraphics.com>
|
||||||
Ismail Khair <ismail.khair@gmail.com>
|
Ismail Khair <ismail.khair@gmail.com>
|
||||||
Carl Danley <carldanley@gmail.com>
|
Carl Danley <carldanley@gmail.com>
|
||||||
Mike Petrovich <michael.c.petrovich@gmail.com>
|
Mike Petrovich <michael.c.petrovich@gmail.com>
|
||||||
Greg Lavallee <greglavallee@wapolabs.com>
|
Greg Lavallee <greglavallee@wapolabs.com>
|
||||||
Daniel Gálvez <dgalvez@editablething.com>
|
|
||||||
Sai Lung Wong <sai.wong@huffingtonpost.com>
|
|
||||||
Tom H Fuertes <TomFuertes@gmail.com>
|
Tom H Fuertes <TomFuertes@gmail.com>
|
||||||
Roland Eckl <eckl.roland@googlemail.com>
|
Roland Eckl <eckl.roland@googlemail.com>
|
||||||
Jay Merrifield <fracmak@gmail.com>
|
|
||||||
Allen J Schmidt Jr <cobrasoft@gmail.com>
|
|
||||||
Jonathan Sampson <jjdsampson@gmail.com>
|
|
||||||
Marcel Greter <marcel.greter@ocbnet.ch>
|
|
||||||
Matthias Jäggli <matthias.jaeggli@gmail.com>
|
|
||||||
David Fox <dfoxinator@gmail.com>
|
|
||||||
Yiming He <yiminghe@gmail.com>
|
Yiming He <yiminghe@gmail.com>
|
||||||
Devin Cooper <cooper.semantics@gmail.com>
|
David Fox <dfoxinator@gmail.com>
|
||||||
|
Bennett Sorbo <bsorbo@gmail.com>
|
||||||
Paul Ramos <paul.b.ramos@gmail.com>
|
Paul Ramos <paul.b.ramos@gmail.com>
|
||||||
Rod Vagg <rod@vagg.org>
|
Rod Vagg <rod@vagg.org>
|
||||||
Bennett Sorbo <bsorbo@gmail.com>
|
|
||||||
Sebastian Burkhard <sebi.burkhard@gmail.com>
|
Sebastian Burkhard <sebi.burkhard@gmail.com>
|
||||||
Zachary Adam Kaplan <razic@viralkitty.com>
|
Zachary Adam Kaplan <razic@viralkitty.com>
|
||||||
|
Adam Coulombe <me@adam.co>
|
||||||
nanto_vi <nanto@moon.email.ne.jp>
|
nanto_vi <nanto@moon.email.ne.jp>
|
||||||
nanto <nanto@moon.email.ne.jp>
|
nanto <nanto@moon.email.ne.jp>
|
||||||
Danil Somsikov <danilasomsikov@gmail.com>
|
Danil Somsikov <danilasomsikov@gmail.com>
|
||||||
Ryunosuke SATO <tricknotes.rs@gmail.com>
|
Ryunosuke SATO <tricknotes.rs@gmail.com>
|
||||||
|
Diego Tres <diegotres@gmail.com>
|
||||||
Jean Boussier <jean.boussier@gmail.com>
|
Jean Boussier <jean.boussier@gmail.com>
|
||||||
Adam Coulombe <me@adam.co>
|
|
||||||
Andrew Plummer <plummer.andrew@gmail.com>
|
Andrew Plummer <plummer.andrew@gmail.com>
|
||||||
Mark Raddatz <mraddatz@gmail.com>
|
Mark Raddatz <mraddatz@gmail.com>
|
||||||
|
Pascal Borreli <pascal@borreli.com>
|
||||||
Isaac Z. Schlueter <i@izs.me>
|
Isaac Z. Schlueter <i@izs.me>
|
||||||
Karl Sieburg <ksieburg@yahoo.com>
|
Karl Sieburg <ksieburg@yahoo.com>
|
||||||
Pascal Borreli <pascal@borreli.com>
|
|
||||||
Nguyen Phuc Lam <ruado1987@gmail.com>
|
Nguyen Phuc Lam <ruado1987@gmail.com>
|
||||||
Dmitry Gusev <dmitry.gusev@gmail.com>
|
Dmitry Gusev <dmitry.gusev@gmail.com>
|
||||||
Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
|
|
||||||
Li Xudong <istonelee@gmail.com>
|
|
||||||
Steven Benner <admin@stevenbenner.com>
|
Steven Benner <admin@stevenbenner.com>
|
||||||
Tom H Fuertes <tomfuertes@gmail.com>
|
Li Xudong <istonelee@gmail.com>
|
||||||
|
Michał Gołębiowski-Owczarek <m.goleb@gmail.com>
|
||||||
Renato Oliveira dos Santos <ros3@cin.ufpe.br>
|
Renato Oliveira dos Santos <ros3@cin.ufpe.br>
|
||||||
|
Frederic Junod <frederic.junod@camptocamp.com>
|
||||||
|
Tom H Fuertes <tomfuertes@gmail.com>
|
||||||
|
Mitch Foley <mitch@thefoley.net>
|
||||||
ros3cin <ros3@cin.ufpe.br>
|
ros3cin <ros3@cin.ufpe.br>
|
||||||
Jason Bedard <jason+jquery@jbedard.ca>
|
|
||||||
Kyle Robinson Young <kyle@dontkry.com>
|
Kyle Robinson Young <kyle@dontkry.com>
|
||||||
|
John Paul <john@johnkpaul.com>
|
||||||
|
Jason Bedard <jason+jquery@jbedard.ca>
|
||||||
Chris Talkington <chris@talkingtontech.com>
|
Chris Talkington <chris@talkingtontech.com>
|
||||||
Eddie Monge <eddie@eddiemonge.com>
|
Eddie Monge <eddie@eddiemonge.com>
|
||||||
Terry Jones <terry@jon.es>
|
Terry Jones <terry@jon.es>
|
||||||
Jason Merino <jasonmerino@gmail.com>
|
Jason Merino <jasonmerino@gmail.com>
|
||||||
|
Dan Burzo <danburzo@gmail.com>
|
||||||
Jeremy Dunck <jdunck@gmail.com>
|
Jeremy Dunck <jdunck@gmail.com>
|
||||||
Chris Price <price.c@gmail.com>
|
Chris Price <price.c@gmail.com>
|
||||||
Guy Bedford <guybedford@gmail.com>
|
Guy Bedford <guybedford@gmail.com>
|
||||||
|
njhamann <njhamann@gmail.com>
|
||||||
|
Goare Mao <mygoare@gmail.com>
|
||||||
Amey Sakhadeo <me@ameyms.com>
|
Amey Sakhadeo <me@ameyms.com>
|
||||||
Mike Sidorov <mikes.ekb@gmail.com>
|
Mike Sidorov <mikes.ekb@gmail.com>
|
||||||
Anthony Ryan <anthonyryan1@gmail.com>
|
Anthony Ryan <anthonyryan1@gmail.com>
|
||||||
Dominik D. Geyer <dominik.geyer@gmail.com>
|
|
||||||
George Kats <katsgeorgeek@gmail.com>
|
|
||||||
Lihan Li <frankieteardrop@gmail.com>
|
Lihan Li <frankieteardrop@gmail.com>
|
||||||
|
George Kats <katsgeorgeek@gmail.com>
|
||||||
|
Dongseok Paeng <dongseok83.paeng@lge.com>
|
||||||
Ronny Springer <springer.ronny@gmail.com>
|
Ronny Springer <springer.ronny@gmail.com>
|
||||||
Chris Antaki <ChrisAntaki@gmail.com>
|
|
||||||
Marian Sollmann <marian.sollmann@cargomedia.ch>
|
|
||||||
njhamann <njhamann@gmail.com>
|
|
||||||
Ilya Kantor <iliakan@gmail.com>
|
Ilya Kantor <iliakan@gmail.com>
|
||||||
|
Marian Sollmann <marian.sollmann@cargomedia.ch>
|
||||||
|
Chris Antaki <ChrisAntaki@gmail.com>
|
||||||
David Hong <d.hong@me.com>
|
David Hong <d.hong@me.com>
|
||||||
John Paul <john@johnkpaul.com>
|
|
||||||
Jakob Stoeck <jakob@pokermania.de>
|
Jakob Stoeck <jakob@pokermania.de>
|
||||||
Christopher Jones <chris@cjqed.com>
|
Christopher Jones <chris@cjqed.com>
|
||||||
Forbes Lindesay <forbes@lindesay.co.uk>
|
Forbes Lindesay <forbes@lindesay.co.uk>
|
||||||
S. Andrew Sheppard <andrew@wq.io>
|
S. Andrew Sheppard <andrew@wq.io>
|
||||||
Leonardo Balter <leonardo.balter@gmail.com>
|
Leonardo Balter <leonardo.balter@gmail.com>
|
||||||
|
Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
|
||||||
|
Daniel Husar <dano.husar@gmail.com>
|
||||||
|
Philip Jägenstedt <philip@foolip.org>
|
||||||
|
John Hoven <hovenj@gmail.com>
|
||||||
Roman Reiß <me@silverwind.io>
|
Roman Reiß <me@silverwind.io>
|
||||||
Benjy Cui <benjytrys@gmail.com>
|
Benjy Cui <benjytrys@gmail.com>
|
||||||
Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
|
|
||||||
John Hoven <hovenj@gmail.com>
|
|
||||||
Philip Jägenstedt <philip@foolip.org>
|
|
||||||
Christian Kosmowski <ksmwsk@gmail.com>
|
Christian Kosmowski <ksmwsk@gmail.com>
|
||||||
|
David Corbacho <davidcorbacho@gmail.com>
|
||||||
Liang Peng <poppinlp@gmail.com>
|
Liang Peng <poppinlp@gmail.com>
|
||||||
TJ VanToll <tj.vantoll@gmail.com>
|
TJ VanToll <tj.vantoll@gmail.com>
|
||||||
Senya Pugach <upisfree@outlook.com>
|
|
||||||
Aurelio De Rosa <aurelioderosa@gmail.com>
|
Aurelio De Rosa <aurelioderosa@gmail.com>
|
||||||
|
Senya Pugach <upisfree@outlook.com>
|
||||||
|
Dan Hart <danhart@notonthehighstreet.com>
|
||||||
Nazar Mokrynskyi <nazar@mokrynskyi.com>
|
Nazar Mokrynskyi <nazar@mokrynskyi.com>
|
||||||
|
Benjamin Tan <demoneaux@gmail.com>
|
||||||
Amit Merchant <bullredeyes@gmail.com>
|
Amit Merchant <bullredeyes@gmail.com>
|
||||||
Jason Bedard <jason+github@jbedard.ca>
|
Jason Bedard <jason+github@jbedard.ca>
|
||||||
Arthur Verschaeve <contact@arthurverschaeve.be>
|
|
||||||
Dan Hart <danhart@notonthehighstreet.com>
|
|
||||||
Bin Xin <rhyzix@gmail.com>
|
|
||||||
David Corbacho <davidcorbacho@gmail.com>
|
|
||||||
Veaceslav Grimalschi <grimalschi@yandex.ru>
|
Veaceslav Grimalschi <grimalschi@yandex.ru>
|
||||||
Daniel Husar <dano.husar@gmail.com>
|
Richard McDaniel <rm0026@uah.edu>
|
||||||
Frederic Hemberger <mail@frederic-hemberger.de>
|
Arthur Verschaeve <contact@arthurverschaeve.be>
|
||||||
Ben Toews <mastahyeti@gmail.com>
|
|
||||||
Aditya Raghavan <araghavan3@gmail.com>
|
|
||||||
Victor Homyakov <vkhomyackov@gmail.com>
|
|
||||||
Shivaji Varma <contact@shivajivarma.com>
|
Shivaji Varma <contact@shivajivarma.com>
|
||||||
|
Ben Toews <mastahyeti@gmail.com>
|
||||||
|
Bin Xin <rhyzix@gmail.com>
|
||||||
|
Neftaly Hernandez <neftaly.hernandez@gmail.com>
|
||||||
|
T.J. Crowder <tj.crowder@farsightsoftware.com>
|
||||||
Nicolas HENRY <icewil@gmail.com>
|
Nicolas HENRY <icewil@gmail.com>
|
||||||
|
Frederic Hemberger <mail@frederic-hemberger.de>
|
||||||
|
Victor Homyakov <vkhomyackov@gmail.com>
|
||||||
|
Aditya Raghavan <araghavan3@gmail.com>
|
||||||
Anne-Gaelle Colom <coloma@westminster.ac.uk>
|
Anne-Gaelle Colom <coloma@westminster.ac.uk>
|
||||||
George Mauer <gmauer@gmail.com>
|
|
||||||
Leonardo Braga <leonardo.braga@gmail.com>
|
Leonardo Braga <leonardo.braga@gmail.com>
|
||||||
|
George Mauer <gmauer@gmail.com>
|
||||||
Stephen Edgar <stephen@netweb.com.au>
|
Stephen Edgar <stephen@netweb.com.au>
|
||||||
Thomas Tortorini <thomastortorini@gmail.com>
|
Thomas Tortorini <thomastortorini@gmail.com>
|
||||||
Winston Howes <winstonhowes@gmail.com>
|
Jörn Wagner <joern.wagner@explicatis.com>
|
||||||
Jon Hester <jon.d.hester@gmail.com>
|
Jon Hester <jon.d.hester@gmail.com>
|
||||||
|
Colin Frick <colin@bash.li>
|
||||||
|
Winston Howes <winstonhowes@gmail.com>
|
||||||
Alexander O'Mara <me@alexomara.com>
|
Alexander O'Mara <me@alexomara.com>
|
||||||
Bastian Buchholz <buchholz.bastian@googlemail.com>
|
|
||||||
Arthur Stolyar <nekr.fabula@gmail.com>
|
|
||||||
Calvin Metcalf <calvin.metcalf@gmail.com>
|
|
||||||
Mu Haibao <mhbseal@163.com>
|
|
||||||
Richard McDaniel <rm0026@uah.edu>
|
|
||||||
Chris Rebert <github@rebertia.com>
|
Chris Rebert <github@rebertia.com>
|
||||||
|
Bastian Buchholz <buchholz.bastian@googlemail.com>
|
||||||
|
Mu Haibao <mhbseal@163.com>
|
||||||
|
Calvin Metcalf <calvin.metcalf@gmail.com>
|
||||||
|
Arthur Stolyar <nekr.fabula@gmail.com>
|
||||||
Gabriel Schulhof <gabriel.schulhof@intel.com>
|
Gabriel Schulhof <gabriel.schulhof@intel.com>
|
||||||
Gilad Peleg <giladp007@gmail.com>
|
Gilad Peleg <giladp007@gmail.com>
|
||||||
|
Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
|
||||||
|
Kevin Kirsche <Kev.Kirsche+GitHub@gmail.com>
|
||||||
Martin Naumann <martin@geekonaut.de>
|
Martin Naumann <martin@geekonaut.de>
|
||||||
|
Yongwoo Jeon <yongwoo.jeon@navercorp.com>
|
||||||
|
John-David Dalton <john.david.dalton@gmail.com>
|
||||||
Marek Lewandowski <m.lewandowski@cksource.com>
|
Marek Lewandowski <m.lewandowski@cksource.com>
|
||||||
Bruno Pérel <brunoperel@gmail.com>
|
Bruno Pérel <brunoperel@gmail.com>
|
||||||
Reed Loden <reed@reedloden.com>
|
|
||||||
Daniel Nill <daniellnill@gmail.com>
|
Daniel Nill <daniellnill@gmail.com>
|
||||||
Yongwoo Jeon <yongwoo.jeon@navercorp.com>
|
Reed Loden <reed@reedloden.com>
|
||||||
Sean Henderson <seanh.za@gmail.com>
|
Sean Henderson <seanh.za@gmail.com>
|
||||||
|
Gary Ye <garysye@gmail.com>
|
||||||
Richard Kraaijenhagen <stdin+git@riichard.com>
|
Richard Kraaijenhagen <stdin+git@riichard.com>
|
||||||
Connor Atherton <c.liam.atherton@gmail.com>
|
Connor Atherton <c.liam.atherton@gmail.com>
|
||||||
Gary Ye <garysye@gmail.com>
|
|
||||||
Christian Grete <webmaster@christiangrete.com>
|
Christian Grete <webmaster@christiangrete.com>
|
||||||
|
Tom von Clef <thomas.vonclef@gmail.com>
|
||||||
Liza Ramo <liza.h.ramo@gmail.com>
|
Liza Ramo <liza.h.ramo@gmail.com>
|
||||||
Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
|
|
||||||
Joelle Fleurantin <joasqueeniebee@gmail.com>
|
Joelle Fleurantin <joasqueeniebee@gmail.com>
|
||||||
Jae Sung Park <alberto.park@gmail.com>
|
Steve Mao <maochenyan@gmail.com>
|
||||||
Jun Sun <klsforever@gmail.com>
|
|
||||||
Josh Soref <apache@soref.com>
|
|
||||||
Henry Wong <henryw4k@gmail.com>
|
|
||||||
Jon Dufresne <jon.dufresne@gmail.com>
|
Jon Dufresne <jon.dufresne@gmail.com>
|
||||||
|
Jae Sung Park <alberto.park@gmail.com>
|
||||||
|
Josh Soref <apache@soref.com>
|
||||||
|
Saptak Sengupta <saptak013@gmail.com>
|
||||||
|
Henry Wong <henryw4k@gmail.com>
|
||||||
|
Jun Sun <klsforever@gmail.com>
|
||||||
Martijn W. van der Lee <martijn@vanderlee.com>
|
Martijn W. van der Lee <martijn@vanderlee.com>
|
||||||
Devin Wilson <dwilson6.github@gmail.com>
|
Devin Wilson <dwilson6.github@gmail.com>
|
||||||
Steve Mao <maochenyan@gmail.com>
|
Damian Senn <jquery@topaxi.codes>
|
||||||
Zack Hall <zackhall@outlook.com>
|
Zack Hall <zackhall@outlook.com>
|
||||||
Bernhard M. Wiedemann <jquerybmw@lsmod.de>
|
|
||||||
Todor Prikumov <tono_pr@abv.bg>
|
|
||||||
Jha Naman <createnaman@gmail.com>
|
|
||||||
William Robinet <william.robinet@conostix.com>
|
|
||||||
Alexander Lisianoi <all3fox@gmail.com>
|
|
||||||
Vitaliy Terziev <vitaliyterziev@gmail.com>
|
Vitaliy Terziev <vitaliyterziev@gmail.com>
|
||||||
|
Todor Prikumov <tono_pr@abv.bg>
|
||||||
|
Bernhard M. Wiedemann <jquerybmw@lsmod.de>
|
||||||
|
Jha Naman <createnaman@gmail.com>
|
||||||
|
Alexander Lisianoi <all3fox@gmail.com>
|
||||||
|
William Robinet <william.robinet@conostix.com>
|
||||||
Joe Trumbull <trumbull.j@gmail.com>
|
Joe Trumbull <trumbull.j@gmail.com>
|
||||||
Alexander K <xpyro@ya.ru>
|
Alexander K <xpyro@ya.ru>
|
||||||
Damian Senn <jquery@topaxi.codes>
|
|
||||||
Ralin Chimev <ralin.chimev@gmail.com>
|
Ralin Chimev <ralin.chimev@gmail.com>
|
||||||
Felipe Sateler <fsateler@gmail.com>
|
Felipe Sateler <fsateler@gmail.com>
|
||||||
Christophe Tafani-Dereeper <christophetd@hotmail.fr>
|
Christophe Tafani-Dereeper <christophetd@hotmail.fr>
|
||||||
@ -297,25 +323,32 @@ Manoj Kumar <nithmanoj@gmail.com>
|
|||||||
David Broder-Rodgers <broder93@gmail.com>
|
David Broder-Rodgers <broder93@gmail.com>
|
||||||
Alex Louden <alex@louden.com>
|
Alex Louden <alex@louden.com>
|
||||||
Alex Padilla <alexonezero@outlook.com>
|
Alex Padilla <alexonezero@outlook.com>
|
||||||
南漂一卒 <shiy007@qq.com>
|
|
||||||
karan-96 <karanbatra96@gmail.com>
|
karan-96 <karanbatra96@gmail.com>
|
||||||
|
南漂一卒 <shiy007@qq.com>
|
||||||
|
Erik Lax <erik@datahack.se>
|
||||||
Boom Lee <teabyii@gmail.com>
|
Boom Lee <teabyii@gmail.com>
|
||||||
Andreas Solleder <asol@num42.de>
|
Andreas Solleder <asol@num42.de>
|
||||||
CDAGaming <cstack2011@yahoo.com>
|
|
||||||
Pierre Spring <pierre@nelm.io>
|
Pierre Spring <pierre@nelm.io>
|
||||||
Shashanka Nataraj <shashankan.10@gmail.com>
|
Shashanka Nataraj <shashankan.10@gmail.com>
|
||||||
Erik Lax <erik@datahack.se>
|
CDAGaming <cstack2011@yahoo.com>
|
||||||
Matan Kotler-Berkowitz <205matan@gmail.com>
|
Matan Kotler-Berkowitz <205matan@gmail.com>
|
||||||
Jordan Beland <jordan.beland@gmail.com>
|
Jordan Beland <jordan.beland@gmail.com>
|
||||||
Henry Zhu <hi@henryzoo.com>
|
Henry Zhu <hi@henryzoo.com>
|
||||||
Saptak Sengupta <saptak013@gmail.com>
|
|
||||||
Nilton Cesar <niltoncms@gmail.com>
|
Nilton Cesar <niltoncms@gmail.com>
|
||||||
basil.belokon <basil.belokon@gmail.com>
|
basil.belokon <basil.belokon@gmail.com>
|
||||||
|
Andrey Meshkov <ay.meshkov@gmail.com>
|
||||||
tmybr11 <tomas.perone@gmail.com>
|
tmybr11 <tomas.perone@gmail.com>
|
||||||
Luis Emilio Velasco Sanchez <emibloque@gmail.com>
|
Luis Emilio Velasco Sanchez <emibloque@gmail.com>
|
||||||
Ed S <ejsanders@gmail.com>
|
Ed S <ejsanders@gmail.com>
|
||||||
Bert Zhang <enbo@users.noreply.github.com>
|
Bert Zhang <enbo@users.noreply.github.com>
|
||||||
|
Sébastien Règne <regseb@users.noreply.github.com>
|
||||||
|
wartmanm <3869625+wartmanm@users.noreply.github.com>
|
||||||
|
Siddharth Dungarwal <sd5869@gmail.com>
|
||||||
|
abnud1 <ahmad13932013@hotmail.com>
|
||||||
Andrei Fangli <andrei_fangli@outlook.com>
|
Andrei Fangli <andrei_fangli@outlook.com>
|
||||||
Marja Hölttä <marja.holtta@gmail.com>
|
Marja Hölttä <marja.holtta@gmail.com>
|
||||||
abnud1 <ahmad13932013@hotmail.com>
|
|
||||||
buddh4 <mail@jharrer.de>
|
buddh4 <mail@jharrer.de>
|
||||||
|
Hoang <dangkyokhoang@gmail.com>
|
||||||
|
Wonseop Kim <wonseop.kim@samsung.com>
|
||||||
|
Pat O'Callaghan <patocallaghan@gmail.com>
|
||||||
|
JuanMa Ruiz <ruizjuanma@gmail.com>
|
||||||
|
@ -64,8 +64,7 @@ module.exports = function( grunt ) {
|
|||||||
deferred: {
|
deferred: {
|
||||||
remove: [ "ajax", "effects", "queue", "core/ready" ],
|
remove: [ "ajax", "effects", "queue", "core/ready" ],
|
||||||
include: [ "core/ready-no-deferred" ]
|
include: [ "core/ready-no-deferred" ]
|
||||||
},
|
}
|
||||||
sizzle: [ "css/hiddenVisibleSelectors", "effects/animatedSelector" ]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -75,9 +74,6 @@ module.exports = function( grunt ) {
|
|||||||
destPrefix: "external"
|
destPrefix: "external"
|
||||||
},
|
},
|
||||||
files: {
|
files: {
|
||||||
"sizzle/dist": "sizzle/dist",
|
|
||||||
"sizzle/LICENSE.txt": "sizzle/LICENSE.txt",
|
|
||||||
|
|
||||||
"npo/npo.js": "native-promise-only/npo.js",
|
"npo/npo.js": "native-promise-only/npo.js",
|
||||||
|
|
||||||
"qunit/qunit.js": "qunit/qunit/qunit.js",
|
"qunit/qunit.js": "qunit/qunit/qunit.js",
|
||||||
|
@ -100,12 +100,6 @@ Some example modules that can be excluded are:
|
|||||||
- **exports/global**: Exclude the attachment of global jQuery variables ($ and jQuery) to the window.
|
- **exports/global**: Exclude the attachment of global jQuery variables ($ and jQuery) to the window.
|
||||||
- **exports/amd**: Exclude the AMD definition.
|
- **exports/amd**: Exclude the AMD definition.
|
||||||
|
|
||||||
As a special case, you may also replace Sizzle by using a special flag `grunt custom:-sizzle`.
|
|
||||||
|
|
||||||
- **sizzle**: The Sizzle selector engine. When this module is excluded, it is replaced by a rudimentary selector engine based on the browser's `querySelectorAll` method that does not support jQuery selector extensions or enhanced semantics. See the [selector-native.js](https://github.com/jquery/jquery/blob/master/src/selector-native.js) file for details.
|
|
||||||
|
|
||||||
*Note*: Excluding Sizzle will also exclude all jQuery selector extensions (such as `effects/animatedSelector` and `css/hiddenVisibleSelectors`).
|
|
||||||
|
|
||||||
The build process shows a message for each dependent module it excludes or includes.
|
The build process shows a message for each dependent module it excludes or includes.
|
||||||
|
|
||||||
##### AMD name
|
##### AMD name
|
||||||
@ -156,7 +150,7 @@ Exclude a bunch of modules:
|
|||||||
grunt custom:-ajax,-css,-deprecated,-dimensions,-effects,-event/alias,-offset,-wrap
|
grunt custom:-ajax,-css,-deprecated,-dimensions,-effects,-event/alias,-offset,-wrap
|
||||||
```
|
```
|
||||||
|
|
||||||
For questions or requests regarding custom builds, please start a thread on the [Developing jQuery Core](https://forum.jquery.com/developing-jquery-core) section of the forum. Due to the combinatorics and custom nature of these builds, they are not regularly tested in jQuery's unit test process. The non-Sizzle selector engine currently does not pass unit tests because it is missing too much essential functionality.
|
For questions or requests regarding custom builds, please start a thread on the [Developing jQuery Core](https://forum.jquery.com/developing-jquery-core) section of the forum. Due to the combinatorics and custom nature of these builds, they are not regularly tested in jQuery's unit test process.
|
||||||
|
|
||||||
Running the Unit Tests
|
Running the Unit Tests
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
@ -14,7 +14,6 @@ module.exports = function( Release ) {
|
|||||||
],
|
],
|
||||||
cdn = require( "./release/cdn" ),
|
cdn = require( "./release/cdn" ),
|
||||||
dist = require( "./release/dist" ),
|
dist = require( "./release/dist" ),
|
||||||
ensureSizzle = require( "./release/ensure-sizzle" ),
|
|
||||||
|
|
||||||
npmTags = Release.npmTags;
|
npmTags = Release.npmTags;
|
||||||
|
|
||||||
@ -22,14 +21,6 @@ module.exports = function( Release ) {
|
|||||||
npmPublish: true,
|
npmPublish: true,
|
||||||
issueTracker: "github",
|
issueTracker: "github",
|
||||||
|
|
||||||
/**
|
|
||||||
* Ensure the repo is in a proper state before release
|
|
||||||
* @param {Function} callback
|
|
||||||
*/
|
|
||||||
checkRepoState: function( callback ) {
|
|
||||||
ensureSizzle( Release, callback );
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the version in the src folder for distributing AMD
|
* Set the version in the src folder for distributing AMD
|
||||||
*/
|
*/
|
||||||
|
@ -65,7 +65,6 @@ module.exports = function( Release, files, complete ) {
|
|||||||
|
|
||||||
// Copy dist files
|
// Copy dist files
|
||||||
var distFolder = Release.dir.dist + "/dist",
|
var distFolder = Release.dir.dist + "/dist",
|
||||||
externalFolder = Release.dir.dist + "/external",
|
|
||||||
readme = fs.readFileSync( Release.dir.dist + "/README.md", "utf8" ),
|
readme = fs.readFileSync( Release.dir.dist + "/README.md", "utf8" ),
|
||||||
rmIgnore = files
|
rmIgnore = files
|
||||||
.concat( [
|
.concat( [
|
||||||
@ -88,10 +87,6 @@ module.exports = function( Release, files, complete ) {
|
|||||||
shell.cp( "-f", Release.dir.repo + "/" + file, distFolder );
|
shell.cp( "-f", Release.dir.repo + "/" + file, distFolder );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// Copy Sizzle
|
|
||||||
shell.mkdir( "-p", externalFolder );
|
|
||||||
shell.cp( "-rf", Release.dir.repo + "/external/sizzle", externalFolder );
|
|
||||||
|
|
||||||
// Copy other files
|
// Copy other files
|
||||||
extras.forEach( function( file ) {
|
extras.forEach( function( file ) {
|
||||||
shell.cp( "-rf", Release.dir.repo + "/" + file, Release.dir.dist );
|
shell.cp( "-rf", Release.dir.repo + "/" + file, Release.dir.dist );
|
||||||
|
@ -1,52 +0,0 @@
|
|||||||
var fs = require( "fs" ),
|
|
||||||
npm = require( "npm" ),
|
|
||||||
chalk = require( "chalk" ),
|
|
||||||
sizzleLoc = __dirname + "/../../external/sizzle/dist/sizzle.js",
|
|
||||||
rversion = /Engine v(\d+\.\d+\.\d+(?:-[-\.\d\w]+)?)/;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the latest tag of Sizzle from npm
|
|
||||||
* @param {Function(string)} callback
|
|
||||||
*/
|
|
||||||
function getLatestSizzle( callback ) {
|
|
||||||
npm.load( function( err, npm ) {
|
|
||||||
if ( err ) {
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
npm.commands.info( [ "sizzle", "version" ], function( err, info ) {
|
|
||||||
if ( err ) {
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
callback( Object.keys( info )[ 0 ] );
|
|
||||||
} );
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ensure the /src folder has the latest tag of Sizzle
|
|
||||||
* @param {Object} Release
|
|
||||||
* @param {Function} callback
|
|
||||||
*/
|
|
||||||
function ensureSizzle( Release, callback ) {
|
|
||||||
console.log();
|
|
||||||
console.log( "Checking Sizzle version..." );
|
|
||||||
getLatestSizzle( function( latest ) {
|
|
||||||
var match = rversion.exec( fs.readFileSync( sizzleLoc, "utf8" ) ),
|
|
||||||
version = match ? match[ 1 ] : "Not Found";
|
|
||||||
|
|
||||||
if ( version !== latest ) {
|
|
||||||
|
|
||||||
// colors is inherited from jquery-release
|
|
||||||
console.log(
|
|
||||||
"The Sizzle version in the src folder (" + chalk.red( version ) +
|
|
||||||
") is not the latest tag (" + chalk.green( latest ) + ")."
|
|
||||||
);
|
|
||||||
Release.confirm( callback );
|
|
||||||
} else {
|
|
||||||
console.log( "Sizzle is latest (" + chalk.green( latest ) + ")" );
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = ensureSizzle;
|
|
@ -72,13 +72,6 @@ module.exports = function( grunt ) {
|
|||||||
)
|
)
|
||||||
.replace( rdefineEnd, "" );
|
.replace( rdefineEnd, "" );
|
||||||
|
|
||||||
// Sizzle treatment
|
|
||||||
} else if ( /\/sizzle$/.test( name ) ) {
|
|
||||||
contents = "var Sizzle =\n" + contents
|
|
||||||
|
|
||||||
// Remove EXPOSE lines from Sizzle
|
|
||||||
.replace( /\/\/\s*EXPOSE[\w\W]*\/\/\s*EXPOSE/, "return Sizzle;" );
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
contents = contents
|
contents = contents
|
||||||
@ -218,11 +211,6 @@ module.exports = function( grunt ) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
grunt.log.error( "Module \"" + module + "\" is a minimum requirement." );
|
grunt.log.error( "Module \"" + module + "\" is a minimum requirement." );
|
||||||
if ( module === "selector" ) {
|
|
||||||
grunt.log.error(
|
|
||||||
"If you meant to replace Sizzle, use -sizzle instead."
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
grunt.log.writeln( flag );
|
grunt.log.writeln( flag );
|
||||||
@ -259,13 +247,6 @@ module.exports = function( grunt ) {
|
|||||||
excluder( flag );
|
excluder( flag );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle Sizzle exclusion
|
|
||||||
// Replace with selector-native
|
|
||||||
if ( ( index = excluded.indexOf( "sizzle" ) ) > -1 ) {
|
|
||||||
config.rawText.selector = "define(['./selector-native']);";
|
|
||||||
excluded.splice( index, 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace exports/global with a noop noConflict
|
// Replace exports/global with a noop noConflict
|
||||||
if ( ( index = excluded.indexOf( "exports/global" ) ) > -1 ) {
|
if ( ( index = excluded.indexOf( "exports/global" ) ) > -1 ) {
|
||||||
config.rawText[ "exports/global" ] = "define(['../core']," +
|
config.rawText[ "exports/global" ] = "define(['../core']," +
|
||||||
|
15
dist/.eslintrc.json
vendored
15
dist/.eslintrc.json
vendored
@ -5,19 +5,6 @@
|
|||||||
|
|
||||||
"rules": {
|
"rules": {
|
||||||
// That is okay for the built version
|
// That is okay for the built version
|
||||||
"no-multiple-empty-lines": "off",
|
"no-multiple-empty-lines": "off"
|
||||||
|
|
||||||
// Sizzle is not compatible with jQuery code style
|
|
||||||
"no-nested-ternary": "off",
|
|
||||||
"no-unused-expressions": "off",
|
|
||||||
"no-unused-vars": "off",
|
|
||||||
"lines-around-comment": "off",
|
|
||||||
"space-in-parens": "off",
|
|
||||||
"camelcase": "off",
|
|
||||||
"computed-property-spacing": "off",
|
|
||||||
"max-len": "off",
|
|
||||||
"dot-notation": "off",
|
|
||||||
"semi-spacing": "off",
|
|
||||||
"brace-style": "off"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
36
external/sizzle/LICENSE.txt
vendored
36
external/sizzle/LICENSE.txt
vendored
@ -1,36 +0,0 @@
|
|||||||
Copyright JS Foundation and other contributors, https://js.foundation/
|
|
||||||
|
|
||||||
This software consists of voluntary contributions made by many
|
|
||||||
individuals. For exact contribution history, see the revision history
|
|
||||||
available at https://github.com/jquery/sizzle
|
|
||||||
|
|
||||||
The following license applies to all parts of this software except as
|
|
||||||
documented below:
|
|
||||||
|
|
||||||
====
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
====
|
|
||||||
|
|
||||||
All files located in the node_modules and external directories are
|
|
||||||
externally maintained libraries used by this software which have their
|
|
||||||
own licenses; we recommend you read them, as their terms may differ from
|
|
||||||
the terms above.
|
|
2282
external/sizzle/dist/sizzle.js
vendored
2282
external/sizzle/dist/sizzle.js
vendored
File diff suppressed because it is too large
Load Diff
3
external/sizzle/dist/sizzle.min.js
vendored
3
external/sizzle/dist/sizzle.min.js
vendored
File diff suppressed because one or more lines are too long
1
external/sizzle/dist/sizzle.min.map
vendored
1
external/sizzle/dist/sizzle.min.map
vendored
File diff suppressed because one or more lines are too long
@ -61,7 +61,6 @@
|
|||||||
"raw-body": "2.3.3",
|
"raw-body": "2.3.3",
|
||||||
"requirejs": "2.3.6",
|
"requirejs": "2.3.6",
|
||||||
"sinon": "7.3.1",
|
"sinon": "7.3.1",
|
||||||
"sizzle": "2.3.4",
|
|
||||||
"strip-json-comments": "2.0.1",
|
"strip-json-comments": "2.0.1",
|
||||||
"testswarm": "1.1.0",
|
"testswarm": "1.1.0",
|
||||||
"uglify-js": "3.4.7"
|
"uglify-js": "3.4.7"
|
||||||
|
@ -9,9 +9,6 @@ define( [
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var boolHook,
|
|
||||||
attrHandle = jQuery.expr.attrHandle;
|
|
||||||
|
|
||||||
jQuery.fn.extend( {
|
jQuery.fn.extend( {
|
||||||
attr: function( name, value ) {
|
attr: function( name, value ) {
|
||||||
return access( this, jQuery.attr, name, value, arguments.length > 1 );
|
return access( this, jQuery.attr, name, value, arguments.length > 1 );
|
||||||
@ -42,8 +39,7 @@ jQuery.extend( {
|
|||||||
// Attribute hooks are determined by the lowercase version
|
// Attribute hooks are determined by the lowercase version
|
||||||
// Grab necessary hook if one is defined
|
// Grab necessary hook if one is defined
|
||||||
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
||||||
hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
|
hooks = jQuery.attrHooks[ name.toLowerCase() ];
|
||||||
( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( value !== undefined ) {
|
if ( value !== undefined ) {
|
||||||
@ -65,7 +61,7 @@ jQuery.extend( {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = jQuery.find.attr( elem, name );
|
ret = elem.getAttribute( name );
|
||||||
|
|
||||||
// Non-existent attributes return null, we normalize to undefined
|
// Non-existent attributes return null, we normalize to undefined
|
||||||
return ret == null ? undefined : ret;
|
return ret == null ? undefined : ret;
|
||||||
@ -105,8 +101,21 @@ jQuery.extend( {
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
// Hooks for boolean attributes
|
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
|
||||||
boolHook = {
|
jQuery.attrHooks[ name ] = {
|
||||||
|
get: function( elem ) {
|
||||||
|
var ret,
|
||||||
|
isXML = jQuery.isXMLDoc( elem ),
|
||||||
|
lowercaseName = name.toLowerCase();
|
||||||
|
|
||||||
|
if ( !isXML ) {
|
||||||
|
ret = elem.getAttribute( name ) != null ?
|
||||||
|
lowercaseName :
|
||||||
|
null;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
},
|
||||||
|
|
||||||
set: function( elem, value, name ) {
|
set: function( elem, value, name ) {
|
||||||
if ( value === false ) {
|
if ( value === false ) {
|
||||||
|
|
||||||
@ -117,26 +126,6 @@ boolHook = {
|
|||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
|
|
||||||
var getter = attrHandle[ name ] || jQuery.find.attr;
|
|
||||||
|
|
||||||
attrHandle[ name ] = function( elem, name, isXML ) {
|
|
||||||
var ret, handle,
|
|
||||||
lowercaseName = name.toLowerCase();
|
|
||||||
|
|
||||||
if ( !isXML ) {
|
|
||||||
|
|
||||||
// Avoid an infinite loop by temporarily removing this function from the getter
|
|
||||||
handle = attrHandle[ lowercaseName ];
|
|
||||||
attrHandle[ lowercaseName ] = ret;
|
|
||||||
ret = getter( elem, name, isXML ) != null ?
|
|
||||||
lowercaseName :
|
|
||||||
null;
|
|
||||||
attrHandle[ lowercaseName ] = handle;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
};
|
};
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
@ -64,7 +64,7 @@ jQuery.extend( {
|
|||||||
// correct value when it hasn't been explicitly set
|
// correct value when it hasn't been explicitly set
|
||||||
// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
||||||
// Use proper attribute retrieval(#12072)
|
// Use proper attribute retrieval(#12072)
|
||||||
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
var tabindex = elem.getAttribute( "tabindex" );
|
||||||
|
|
||||||
if ( tabindex ) {
|
if ( tabindex ) {
|
||||||
return parseInt( tabindex, 10 );
|
return parseInt( tabindex, 10 );
|
||||||
|
@ -84,7 +84,7 @@ jQuery.extend( {
|
|||||||
option: {
|
option: {
|
||||||
get: function( elem ) {
|
get: function( elem ) {
|
||||||
|
|
||||||
var val = jQuery.find.attr( elem, "value" );
|
var val = elem.getAttribute( "value" );
|
||||||
return val != null ?
|
return val != null ?
|
||||||
val :
|
val :
|
||||||
|
|
||||||
|
52
src/core.js
52
src/core.js
@ -25,8 +25,9 @@ define( [
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var
|
var version = "@VERSION",
|
||||||
version = "@VERSION",
|
|
||||||
|
rhtmlSuffix = /HTML$/i,
|
||||||
|
|
||||||
// Define a local copy of jQuery
|
// Define a local copy of jQuery
|
||||||
jQuery = function( selector, context ) {
|
jQuery = function( selector, context ) {
|
||||||
@ -259,6 +260,44 @@ jQuery.extend( {
|
|||||||
return obj;
|
return obj;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
// Retrieve the text value of an array of DOM nodes
|
||||||
|
text: function( elem ) {
|
||||||
|
var node,
|
||||||
|
ret = "",
|
||||||
|
i = 0,
|
||||||
|
nodeType = elem.nodeType;
|
||||||
|
|
||||||
|
if ( !nodeType ) {
|
||||||
|
|
||||||
|
// If no nodeType, this is expected to be an array
|
||||||
|
while ( ( node = elem[ i++ ] ) ) {
|
||||||
|
|
||||||
|
// Do not traverse comment nodes
|
||||||
|
ret += jQuery.text( node );
|
||||||
|
}
|
||||||
|
} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
|
||||||
|
|
||||||
|
// Use textContent for elements
|
||||||
|
// innerText usage removed for consistency of new lines (jQuery #11153)
|
||||||
|
if ( typeof elem.textContent === "string" ) {
|
||||||
|
return elem.textContent;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Traverse its children
|
||||||
|
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
||||||
|
ret += jQuery.text( elem );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if ( nodeType === 3 || nodeType === 4 ) {
|
||||||
|
return elem.nodeValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do not include comment or processing instruction nodes
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
},
|
||||||
|
|
||||||
trim: function( text ) {
|
trim: function( text ) {
|
||||||
return text == null ? "" : trim.call( text );
|
return text == null ? "" : trim.call( text );
|
||||||
},
|
},
|
||||||
@ -285,6 +324,15 @@ jQuery.extend( {
|
|||||||
return arr == null ? -1 : indexOf.call( arr, elem, i );
|
return arr == null ? -1 : indexOf.call( arr, elem, i );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
isXMLDoc: function( elem ) {
|
||||||
|
var namespace = elem.namespaceURI,
|
||||||
|
docElem = ( elem.ownerDocument || elem ).documentElement;
|
||||||
|
|
||||||
|
// Assume HTML when documentElement doesn't yet exist, such as inside
|
||||||
|
// document fragments.
|
||||||
|
return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
|
||||||
|
},
|
||||||
|
|
||||||
merge: function( first, second ) {
|
merge: function( first, second ) {
|
||||||
var len = +second.length,
|
var len = +second.length,
|
||||||
j = 0,
|
j = 0,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
define( [
|
define( [
|
||||||
"../core",
|
"../core",
|
||||||
"../var/documentElement",
|
"../var/documentElement",
|
||||||
"../selector" // jQuery.contains
|
"../selector/contains" // jQuery.contains
|
||||||
], function( jQuery, documentElement ) {
|
], function( jQuery, documentElement ) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
7
src/core/var/rhtml.js
Normal file
7
src/core/var/rhtml.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
define( function() {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
return ( /HTML$/i );
|
||||||
|
|
||||||
|
} );
|
@ -30,13 +30,9 @@ define( [
|
|||||||
|
|
||||||
var
|
var
|
||||||
|
|
||||||
/* eslint-disable max-len */
|
|
||||||
|
|
||||||
// See https://github.com/eslint/eslint/issues/3229
|
// See https://github.com/eslint/eslint/issues/3229
|
||||||
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
|
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
|
||||||
|
|
||||||
/* eslint-enable */
|
|
||||||
|
|
||||||
// Support: IE <=10 - 11+, Edge 12 - 13 only
|
// Support: IE <=10 - 11+, Edge 12 - 13 only
|
||||||
// In IE/Edge using regex groups here causes severe slowdowns.
|
// In IE/Edge using regex groups here causes severe slowdowns.
|
||||||
// See https://connect.microsoft.com/IE/feedback/details/1736512/
|
// See https://connect.microsoft.com/IE/feedback/details/1736512/
|
||||||
@ -223,7 +219,8 @@ jQuery.extend( {
|
|||||||
if ( isIE && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
if ( isIE && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
||||||
!jQuery.isXMLDoc( elem ) ) {
|
!jQuery.isXMLDoc( elem ) ) {
|
||||||
|
|
||||||
// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
|
// We eschew jQuery#find here for performance reasons:
|
||||||
|
// https://jsperf.com/getall-vs-sizzle/2
|
||||||
destElements = getAll( clone );
|
destElements = getAll( clone );
|
||||||
srcElements = getAll( elem );
|
srcElements = getAll( elem );
|
||||||
|
|
||||||
|
@ -1,240 +0,0 @@
|
|||||||
define( [
|
|
||||||
"./core",
|
|
||||||
"./var/document",
|
|
||||||
"./var/documentElement",
|
|
||||||
"./var/hasOwn",
|
|
||||||
"./var/indexOf"
|
|
||||||
], function( jQuery, document, documentElement, hasOwn, indexOf ) {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Optional (non-Sizzle) selector module for custom builds.
|
|
||||||
*
|
|
||||||
* Note that this DOES NOT SUPPORT many documented jQuery
|
|
||||||
* features in exchange for its smaller size:
|
|
||||||
*
|
|
||||||
* Attribute not equal selector
|
|
||||||
* Positional selectors (:first; :eq(n); :odd; etc.)
|
|
||||||
* Type selectors (:input; :checkbox; :button; etc.)
|
|
||||||
* State-based selectors (:animated; :visible; :hidden; etc.)
|
|
||||||
* :has(selector)
|
|
||||||
* :not(complex selector)
|
|
||||||
* custom selectors via Sizzle extensions
|
|
||||||
* Leading combinators (e.g., $collection.find("> *"))
|
|
||||||
* Reliable functionality on XML fragments
|
|
||||||
* Requiring all parts of a selector to match elements under context
|
|
||||||
* (e.g., $div.find("div > *") now matches children of $div)
|
|
||||||
* Matching against non-elements
|
|
||||||
* Reliable sorting of disconnected nodes
|
|
||||||
* querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
|
|
||||||
*
|
|
||||||
* If any of these are unacceptable tradeoffs, either use Sizzle or
|
|
||||||
* customize this stub for the project's specific needs.
|
|
||||||
*/
|
|
||||||
|
|
||||||
var hasDuplicate, sortInput,
|
|
||||||
rhtmlSuffix = /HTML$/i,
|
|
||||||
sortStable = jQuery.expando.split( "" ).sort( sortOrder ).join( "" ) === jQuery.expando,
|
|
||||||
|
|
||||||
// Support: IE 9 - 11+
|
|
||||||
// IE requires a prefix.
|
|
||||||
matches = documentElement.matches || documentElement.msMatchesSelector,
|
|
||||||
|
|
||||||
// CSS string/identifier serialization
|
|
||||||
// https://drafts.csswg.org/cssom/#common-serializing-idioms
|
|
||||||
rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
|
|
||||||
fcssescape = function( ch, asCodePoint ) {
|
|
||||||
if ( asCodePoint ) {
|
|
||||||
|
|
||||||
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
|
|
||||||
if ( ch === "\0" ) {
|
|
||||||
return "\uFFFD";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Control characters and (dependent upon position) numbers get escaped as code points
|
|
||||||
return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Other potentially-special ASCII characters get backslash-escaped
|
|
||||||
return "\\" + ch;
|
|
||||||
};
|
|
||||||
|
|
||||||
function sortOrder( a, b ) {
|
|
||||||
|
|
||||||
// Flag for duplicate removal
|
|
||||||
if ( a === b ) {
|
|
||||||
hasDuplicate = true;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sort on method existence if only one input has compareDocumentPosition
|
|
||||||
var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
|
|
||||||
if ( compare ) {
|
|
||||||
return compare;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Calculate position if both inputs belong to the same document
|
|
||||||
compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
|
|
||||||
a.compareDocumentPosition( b ) :
|
|
||||||
|
|
||||||
// Otherwise we know they are disconnected
|
|
||||||
1;
|
|
||||||
|
|
||||||
// Disconnected nodes
|
|
||||||
if ( compare & 1 ) {
|
|
||||||
|
|
||||||
// Choose the first element that is related to our preferred document
|
|
||||||
if ( a === document || a.ownerDocument === document &&
|
|
||||||
jQuery.contains( document, a ) ) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if ( b === document || b.ownerDocument === document &&
|
|
||||||
jQuery.contains( document, b ) ) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Maintain original order
|
|
||||||
return sortInput ?
|
|
||||||
( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
|
|
||||||
0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return compare & 4 ? -1 : 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
function uniqueSort( results ) {
|
|
||||||
var elem,
|
|
||||||
duplicates = [],
|
|
||||||
j = 0,
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
hasDuplicate = false;
|
|
||||||
sortInput = !sortStable && results.slice( 0 );
|
|
||||||
results.sort( sortOrder );
|
|
||||||
|
|
||||||
if ( hasDuplicate ) {
|
|
||||||
while ( ( elem = results[ i++ ] ) ) {
|
|
||||||
if ( elem === results[ i ] ) {
|
|
||||||
j = duplicates.push( i );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while ( j-- ) {
|
|
||||||
results.splice( duplicates[ j ], 1 );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear input after sorting to release objects
|
|
||||||
// See https://github.com/jquery/sizzle/pull/225
|
|
||||||
sortInput = null;
|
|
||||||
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
function escape( sel ) {
|
|
||||||
return ( sel + "" ).replace( rcssescape, fcssescape );
|
|
||||||
}
|
|
||||||
|
|
||||||
jQuery.extend( {
|
|
||||||
uniqueSort: uniqueSort,
|
|
||||||
unique: uniqueSort,
|
|
||||||
escapeSelector: escape,
|
|
||||||
find: function( selector, context, results, seed ) {
|
|
||||||
var elem, nodeType,
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
results = results || [];
|
|
||||||
context = context || document;
|
|
||||||
|
|
||||||
// Same basic safeguard as Sizzle
|
|
||||||
if ( !selector || typeof selector !== "string" ) {
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Early return if context is not an element or document
|
|
||||||
if ( ( nodeType = context.nodeType ) !== 1 && nodeType !== 9 ) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( seed ) {
|
|
||||||
while ( ( elem = seed[ i++ ] ) ) {
|
|
||||||
if ( jQuery.find.matchesSelector( elem, selector ) ) {
|
|
||||||
results.push( elem );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
jQuery.merge( results, context.querySelectorAll( selector ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
return results;
|
|
||||||
},
|
|
||||||
text: function( elem ) {
|
|
||||||
var node,
|
|
||||||
ret = "",
|
|
||||||
i = 0,
|
|
||||||
nodeType = elem.nodeType;
|
|
||||||
|
|
||||||
if ( !nodeType ) {
|
|
||||||
|
|
||||||
// If no nodeType, this is expected to be an array
|
|
||||||
while ( ( node = elem[ i++ ] ) ) {
|
|
||||||
|
|
||||||
// Do not traverse comment nodes
|
|
||||||
ret += jQuery.text( node );
|
|
||||||
}
|
|
||||||
} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
|
|
||||||
|
|
||||||
// Use textContent for elements
|
|
||||||
return elem.textContent;
|
|
||||||
} else if ( nodeType === 3 || nodeType === 4 ) {
|
|
||||||
return elem.nodeValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not include comment or processing instruction nodes
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
},
|
|
||||||
contains: function( a, b ) {
|
|
||||||
var adown = a.nodeType === 9 ? a.documentElement : a,
|
|
||||||
bup = b && b.parentNode;
|
|
||||||
return a === bup || !!( bup && bup.nodeType === 1 && adown.contains( bup ) );
|
|
||||||
},
|
|
||||||
isXMLDoc: function( elem ) {
|
|
||||||
var namespace = elem.namespaceURI,
|
|
||||||
documentElement = ( elem.ownerDocument || elem ).documentElement;
|
|
||||||
|
|
||||||
// Assume HTML when documentElement doesn't yet exist, such as inside
|
|
||||||
// document fragments.
|
|
||||||
return !rhtmlSuffix.test( namespace ||
|
|
||||||
documentElement && documentElement.nodeName ||
|
|
||||||
"HTML" );
|
|
||||||
},
|
|
||||||
expr: {
|
|
||||||
attrHandle: {},
|
|
||||||
match: {
|
|
||||||
bool: new RegExp( "^(?:checked|selected|async|autofocus|autoplay|controls|defer" +
|
|
||||||
"|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i" ),
|
|
||||||
needsContext: /^[\x20\t\r\n\f]*[>+~]/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
|
|
||||||
jQuery.extend( jQuery.find, {
|
|
||||||
matches: function( expr, elements ) {
|
|
||||||
return jQuery.find( expr, null, null, elements );
|
|
||||||
},
|
|
||||||
matchesSelector: function( elem, expr ) {
|
|
||||||
return matches.call( elem, expr );
|
|
||||||
},
|
|
||||||
attr: function( elem, name ) {
|
|
||||||
var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
|
|
||||||
|
|
||||||
// Don't get fooled by Object.prototype properties (jQuery #13807)
|
|
||||||
value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
|
|
||||||
fn( elem, name, jQuery.isXMLDoc( elem ) ) :
|
|
||||||
undefined;
|
|
||||||
return value !== undefined ? value : elem.getAttribute( name );
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
|
|
||||||
} );
|
|
@ -1,20 +0,0 @@
|
|||||||
define( [
|
|
||||||
"./core",
|
|
||||||
"../external/sizzle/dist/sizzle"
|
|
||||||
], function( jQuery, Sizzle ) {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
jQuery.find = Sizzle;
|
|
||||||
jQuery.expr = Sizzle.selectors;
|
|
||||||
|
|
||||||
// Deprecated
|
|
||||||
jQuery.expr[ ":" ] = jQuery.expr.pseudos;
|
|
||||||
|
|
||||||
jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
|
|
||||||
jQuery.text = Sizzle.getText;
|
|
||||||
jQuery.isXMLDoc = Sizzle.isXML;
|
|
||||||
jQuery.contains = Sizzle.contains;
|
|
||||||
jQuery.escapeSelector = Sizzle.escape;
|
|
||||||
|
|
||||||
} );
|
|
1674
src/selector.js
1674
src/selector.js
File diff suppressed because it is too large
Load Diff
22
src/selector/contains.js
Normal file
22
src/selector/contains.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
define( [
|
||||||
|
"../core"
|
||||||
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// Note: an element does not contain itself
|
||||||
|
jQuery.contains = function( a, b ) {
|
||||||
|
var adown = a.nodeType === 9 ? a.documentElement : a,
|
||||||
|
bup = b && b.parentNode;
|
||||||
|
|
||||||
|
return a === bup || !!( bup && bup.nodeType === 1 && (
|
||||||
|
|
||||||
|
// Support: IE 9 - 11+
|
||||||
|
// IE doesn't have `contains` on SVG.
|
||||||
|
adown.contains ?
|
||||||
|
adown.contains( bup ) :
|
||||||
|
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
|
||||||
|
) );
|
||||||
|
};
|
||||||
|
|
||||||
|
} );
|
31
src/selector/escapeSelector.js
Normal file
31
src/selector/escapeSelector.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
define( [
|
||||||
|
"../core"
|
||||||
|
], function( jQuery ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// CSS string/identifier serialization
|
||||||
|
// https://drafts.csswg.org/cssom/#common-serializing-idioms
|
||||||
|
var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
|
||||||
|
|
||||||
|
function fcssescape( ch, asCodePoint ) {
|
||||||
|
if ( asCodePoint ) {
|
||||||
|
|
||||||
|
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
|
||||||
|
if ( ch === "\0" ) {
|
||||||
|
return "\uFFFD";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Control characters and (dependent upon position) numbers get escaped as code points
|
||||||
|
return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Other potentially-special ASCII characters get backslash-escaped
|
||||||
|
return "\\" + ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery.escapeSelector = function( sel ) {
|
||||||
|
return ( sel + "" ).replace( rcssescape, fcssescape );
|
||||||
|
};
|
||||||
|
|
||||||
|
} );
|
80
src/selector/uniqueSort.js
Normal file
80
src/selector/uniqueSort.js
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
define( [
|
||||||
|
"../core",
|
||||||
|
"../var/document"
|
||||||
|
], function( jQuery, document ) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var hasDuplicate;
|
||||||
|
|
||||||
|
// Document order sorting
|
||||||
|
function sortOrder( a, b ) {
|
||||||
|
|
||||||
|
// Flag for duplicate removal
|
||||||
|
if ( a === b ) {
|
||||||
|
hasDuplicate = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort on method existence if only one input has compareDocumentPosition
|
||||||
|
var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
|
||||||
|
if ( compare ) {
|
||||||
|
return compare;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate position if both inputs belong to the same document
|
||||||
|
compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
|
||||||
|
a.compareDocumentPosition( b ) :
|
||||||
|
|
||||||
|
// Otherwise we know they are disconnected
|
||||||
|
1;
|
||||||
|
|
||||||
|
// Disconnected nodes
|
||||||
|
if ( compare & 1 ) {
|
||||||
|
|
||||||
|
// Choose the first element that is related to the document
|
||||||
|
if ( a === document || a.ownerDocument === document &&
|
||||||
|
jQuery.contains( document, a ) ) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if ( b === document || b.ownerDocument === document &&
|
||||||
|
jQuery.contains( document, b ) ) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Maintain original order
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return compare & 4 ? -1 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Document sorting and removing duplicates
|
||||||
|
* @param {ArrayLike} results
|
||||||
|
*/
|
||||||
|
jQuery.uniqueSort = function( results ) {
|
||||||
|
var elem,
|
||||||
|
duplicates = [],
|
||||||
|
j = 0,
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
hasDuplicate = false;
|
||||||
|
|
||||||
|
results.sort( sortOrder );
|
||||||
|
|
||||||
|
if ( hasDuplicate ) {
|
||||||
|
while ( ( elem = results[ i++ ] ) ) {
|
||||||
|
if ( elem === results[ i ] ) {
|
||||||
|
j = duplicates.push( i );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while ( j-- ) {
|
||||||
|
results.splice( duplicates[ j ], 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
|
||||||
|
} );
|
@ -55,7 +55,7 @@ jQuery.fn.extend( {
|
|||||||
if ( cur.nodeType < 11 && ( targets ?
|
if ( cur.nodeType < 11 && ( targets ?
|
||||||
targets.index( cur ) > -1 :
|
targets.index( cur ) > -1 :
|
||||||
|
|
||||||
// Don't pass non-elements to Sizzle
|
// Don't pass non-elements to jQuery#find
|
||||||
cur.nodeType === 1 &&
|
cur.nodeType === 1 &&
|
||||||
jQuery.find.matchesSelector( cur, selectors ) ) ) {
|
jQuery.find.matchesSelector( cur, selectors ) ) ) {
|
||||||
|
|
||||||
|
7
src/var/pop.js
Normal file
7
src/var/pop.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
define( [
|
||||||
|
"./arr"
|
||||||
|
], function( arr ) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
return arr.pop;
|
||||||
|
} );
|
@ -3,9 +3,6 @@
|
|||||||
* jQuery JavaScript Library v@VERSION
|
* jQuery JavaScript Library v@VERSION
|
||||||
* https://jquery.com/
|
* https://jquery.com/
|
||||||
*
|
*
|
||||||
* Includes Sizzle.js
|
|
||||||
* https://sizzlejs.com/
|
|
||||||
*
|
|
||||||
* Copyright JS Foundation and other contributors
|
* Copyright JS Foundation and other contributors
|
||||||
* Released under the MIT license
|
* Released under the MIT license
|
||||||
* https://jquery.org/license
|
* https://jquery.org/license
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||||
<title>jQuery selector - sizzle cache</title>
|
<title>jQuery selector - cache</title>
|
||||||
|
|
||||||
<script src="../../jquery.js"></script>
|
<script src="../../jquery.js"></script>
|
||||||
<script src="../iframeTest.js"></script>
|
<script src="../iframeTest.js"></script>
|
@ -12,7 +12,6 @@
|
|||||||
var doc = parent.document,
|
var doc = parent.document,
|
||||||
unframed = [ doc.getElementById( "qunit-fixture" ), doc.body, doc.documentElement ],
|
unframed = [ doc.getElementById( "qunit-fixture" ), doc.body, doc.documentElement ],
|
||||||
framed = jQuery.find( "*" );
|
framed = jQuery.find( "*" );
|
||||||
parent.console.log( unframed );
|
|
||||||
|
|
||||||
startIframeTest(
|
startIframeTest(
|
||||||
jQuery.uniqueSort( unframed.concat( framed ) ),
|
jQuery.uniqueSort( unframed.concat( framed ) ),
|
||||||
|
@ -45,7 +45,7 @@ this.q = function() {
|
|||||||
/**
|
/**
|
||||||
* Asserts that a select matches the given IDs
|
* Asserts that a select matches the given IDs
|
||||||
* @param {String} message - Assertion name
|
* @param {String} message - Assertion name
|
||||||
* @param {String} selector - Sizzle selector
|
* @param {String} selector - jQuery selector
|
||||||
* @param {String} expectedIds - Array of ids to construct what is expected
|
* @param {String} expectedIds - Array of ids to construct what is expected
|
||||||
* @param {(String|Node)=document} context - Selector context
|
* @param {(String|Node)=document} context - Selector context
|
||||||
* @example match("Check for something", "p", ["foo", "bar"]);
|
* @example match("Check for something", "p", ["foo", "bar"]);
|
||||||
@ -60,7 +60,7 @@ function match( message, selector, expectedIds, context, assert ) {
|
|||||||
* Asserts that a select matches the given IDs.
|
* Asserts that a select matches the given IDs.
|
||||||
* The select is not bound by a context.
|
* The select is not bound by a context.
|
||||||
* @param {String} message - Assertion name
|
* @param {String} message - Assertion name
|
||||||
* @param {String} selector - Sizzle selector
|
* @param {String} selector - jQuery selector
|
||||||
* @param {String} expectedIds - Array of ids to construct what is expected
|
* @param {String} expectedIds - Array of ids to construct what is expected
|
||||||
* @example t("Check for something", "p", ["foo", "bar"]);
|
* @example t("Check for something", "p", ["foo", "bar"]);
|
||||||
*/
|
*/
|
||||||
@ -72,7 +72,7 @@ QUnit.assert.t = function( message, selector, expectedIds ) {
|
|||||||
* Asserts that a select matches the given IDs.
|
* Asserts that a select matches the given IDs.
|
||||||
* The select is performed within the `#qunit-fixture` context.
|
* The select is performed within the `#qunit-fixture` context.
|
||||||
* @param {String} message - Assertion name
|
* @param {String} message - Assertion name
|
||||||
* @param {String} selector - Sizzle selector
|
* @param {String} selector - jQuery selector
|
||||||
* @param {String} expectedIds - Array of ids to construct what is expected
|
* @param {String} expectedIds - Array of ids to construct what is expected
|
||||||
* @example selectInFixture("Check for something", "p", ["foo", "bar"]);
|
* @example selectInFixture("Check for something", "p", ["foo", "bar"]);
|
||||||
*/
|
*/
|
||||||
@ -280,6 +280,18 @@ if ( !window.__karma__ ) {
|
|||||||
QUnit.isSwarm = ( QUnit.urlParams.swarmURL + "" ).indexOf( "http" ) === 0;
|
QUnit.isSwarm = ( QUnit.urlParams.swarmURL + "" ).indexOf( "http" ) === 0;
|
||||||
QUnit.basicTests = ( QUnit.urlParams.module + "" ) === "basic";
|
QUnit.basicTests = ( QUnit.urlParams.module + "" ) === "basic";
|
||||||
|
|
||||||
|
// Says whether jQuery positional selector extensions are supported.
|
||||||
|
// A full selector engine is required to support them as they need to be evaluated
|
||||||
|
// left-to-right. Remove that property when support for positional selectors is dropped.
|
||||||
|
// if your custom jQuery versions relies more on native qSA.
|
||||||
|
QUnit.jQuerySelectorsPos = true;
|
||||||
|
|
||||||
|
// Says whether jQuery selector extensions are supported. Change that to `false`
|
||||||
|
// if your custom jQuery versions relies more on native qSA.
|
||||||
|
// This doesn't include support for positional selectors (see above).
|
||||||
|
// TODO do we want to keep this or just assume support for jQuery extensions?
|
||||||
|
QUnit.jQuerySelectors = true;
|
||||||
|
|
||||||
// Support: IE 11+
|
// Support: IE 11+
|
||||||
// A variable to make it easier to skip specific tests in IE, mostly
|
// A variable to make it easier to skip specific tests in IE, mostly
|
||||||
// testing integrations with newer Web features not supported by it.
|
// testing integrations with newer Web features not supported by it.
|
||||||
|
@ -488,29 +488,6 @@ QUnit.test( "attr(non-ASCII)", function( assert ) {
|
|||||||
assert.equal( $div.attr( "AØC" ), "alpha", ".attr() exclusively lowercases characters in the range A-Z (gh-2730)" );
|
assert.equal( $div.attr( "AØC" ), "alpha", ".attr() exclusively lowercases characters in the range A-Z (gh-2730)" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit.test( "attr - extending the boolean attrHandle", function( assert ) {
|
|
||||||
assert.expect( 1 );
|
|
||||||
var called = false,
|
|
||||||
origAttrHandleHadChecked = "checked" in jQuery.expr.attrHandle,
|
|
||||||
origAttrHandleChecked = jQuery.expr.attrHandle.checked,
|
|
||||||
_handle = origAttrHandleChecked || $.noop;
|
|
||||||
jQuery.expr.attrHandle.checked = function() {
|
|
||||||
called = true;
|
|
||||||
_handle.apply( this, arguments );
|
|
||||||
};
|
|
||||||
jQuery( "#qunit-fixture input" ).attr( "checked" );
|
|
||||||
called = false;
|
|
||||||
jQuery( "#qunit-fixture input" ).attr( "checked" );
|
|
||||||
assert.ok( called, "The boolean attrHandle does not drop custom attrHandles" );
|
|
||||||
|
|
||||||
if ( origAttrHandleHadChecked ) {
|
|
||||||
jQuery.expr.attrHandle.checked = origAttrHandleChecked;
|
|
||||||
} else {
|
|
||||||
delete jQuery.expr.attrHandle.checked;
|
|
||||||
}
|
|
||||||
|
|
||||||
} );
|
|
||||||
|
|
||||||
QUnit.test( "attr(String, Object) - Loaded via XML document", function( assert ) {
|
QUnit.test( "attr(String, Object) - Loaded via XML document", function( assert ) {
|
||||||
assert.expect( 2 );
|
assert.expect( 2 );
|
||||||
var xml = createDashboardXML(),
|
var xml = createDashboardXML(),
|
||||||
|
@ -66,7 +66,7 @@ QUnit.test( "jQuery()", function( assert ) {
|
|||||||
assert.equal( jQuery( "" ).length, 0, "jQuery('') === jQuery([])" );
|
assert.equal( jQuery( "" ).length, 0, "jQuery('') === jQuery([])" );
|
||||||
assert.deepEqual( jQuery( obj ).get(), obj.get(), "jQuery(jQueryObj) == jQueryObj" );
|
assert.deepEqual( jQuery( obj ).get(), obj.get(), "jQuery(jQueryObj) == jQueryObj" );
|
||||||
|
|
||||||
// Invalid #id goes to Sizzle which will throw an error (gh-1682)
|
// Invalid #id will throw an error (gh-1682)
|
||||||
try {
|
try {
|
||||||
jQuery( "#" );
|
jQuery( "#" );
|
||||||
} catch ( e ) {
|
} catch ( e ) {
|
||||||
@ -153,7 +153,7 @@ QUnit.test( "jQuery()", function( assert ) {
|
|||||||
"Empty attributes object is not interpreted as a document (trac-8950)" );
|
"Empty attributes object is not interpreted as a document (trac-8950)" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "jQuery(selector, context)", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "jQuery(selector, context)", function( assert ) {
|
||||||
assert.expect( 3 );
|
assert.expect( 3 );
|
||||||
assert.deepEqual( jQuery( "div p", "#qunit-fixture" ).get(), q( "sndp", "en", "sap" ), "Basic selector with string as context" );
|
assert.deepEqual( jQuery( "div p", "#qunit-fixture" ).get(), q( "sndp", "en", "sap" ), "Basic selector with string as context" );
|
||||||
assert.deepEqual( jQuery( "div p", q( "qunit-fixture" )[ 0 ] ).get(), q( "sndp", "en", "sap" ), "Basic selector with element as context" );
|
assert.deepEqual( jQuery( "div p", q( "qunit-fixture" )[ 0 ] ).get(), q( "sndp", "en", "sap" ), "Basic selector with element as context" );
|
||||||
@ -484,7 +484,7 @@ QUnit.test( "jQuery('html')", function( assert ) {
|
|||||||
|
|
||||||
//equal( jQuery( "element[attribute=<div></div>]" ).length, 0,
|
//equal( jQuery( "element[attribute=<div></div>]" ).length, 0,
|
||||||
// "When html is within brackets, do not recognize as html." );
|
// "When html is within brackets, do not recognize as html." );
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.equal( jQuery( "element:not(<div></div>)" ).length, 0,
|
assert.equal( jQuery( "element:not(<div></div>)" ).length, 0,
|
||||||
"When html is within parens, do not recognize as html." );
|
"When html is within parens, do not recognize as html." );
|
||||||
} else {
|
} else {
|
||||||
|
@ -970,7 +970,7 @@ QUnit.test( "show/hide 3.0, inline hidden", function( assert ) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile && jQuery.fn.toggle ? "test" : "skip" ]( "toggle()", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors && jQuery.fn.toggle ? "test" : "skip" ]( "toggle()", function( assert ) {
|
||||||
assert.expect( 9 );
|
assert.expect( 9 );
|
||||||
var div, oldHide,
|
var div, oldHide,
|
||||||
x = jQuery( "#foo" );
|
x = jQuery( "#foo" );
|
||||||
@ -1003,7 +1003,7 @@ QUnit[ jQuery.find.compile && jQuery.fn.toggle ? "test" : "skip" ]( "toggle()",
|
|||||||
jQuery.fn.hide = oldHide;
|
jQuery.fn.hide = oldHide;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile && jQuery.fn.toggle ? "test" : "skip" ]( "detached toggle()", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors && jQuery.fn.toggle ? "test" : "skip" ]( "detached toggle()", function( assert ) {
|
||||||
assert.expect( 6 );
|
assert.expect( 6 );
|
||||||
var detached = jQuery( "<p><a/><p>" ).find( "*" ).addBack(),
|
var detached = jQuery( "<p><a/><p>" ).find( "*" ).addBack(),
|
||||||
hiddenDetached = jQuery( "<p><a/></p>" ).find( "*" ).addBack().css( "display", "none" ),
|
hiddenDetached = jQuery( "<p><a/></p>" ).find( "*" ).addBack().css( "display", "none" ),
|
||||||
@ -1027,8 +1027,11 @@ QUnit[ jQuery.find.compile && jQuery.fn.toggle ? "test" : "skip" ]( "detached to
|
|||||||
"cascade-hidden element in detached tree" );
|
"cascade-hidden element in detached tree" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile && jQuery.fn.toggle && document.body.getRootNode ? "test" : "skip" ]( "shadow toggle()", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors && jQuery.fn.toggle && document.body.getRootNode ? "test" : "skip" ](
|
||||||
|
"shadow toggle()", function( assert ) {
|
||||||
|
|
||||||
assert.expect( 4 );
|
assert.expect( 4 );
|
||||||
|
|
||||||
jQuery( "<div id='shadowHost'></div>" ).appendTo( "#qunit-fixture" );
|
jQuery( "<div id='shadowHost'></div>" ).appendTo( "#qunit-fixture" );
|
||||||
var shadowHost = document.querySelector( "#shadowHost" );
|
var shadowHost = document.querySelector( "#shadowHost" );
|
||||||
var shadowRoot = shadowHost.attachShadow( { mode: "open" } );
|
var shadowRoot = shadowHost.attachShadow( { mode: "open" } );
|
||||||
@ -1459,7 +1462,7 @@ QUnit.test( "css opacity consistency across browsers (#12685)", function( assert
|
|||||||
assert.equal( Math.round( el.css( "opacity" ) * 100 ), 10, "remove opacity override" );
|
assert.equal( Math.round( el.css( "opacity" ) * 100 ), 10, "remove opacity override" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( ":visible/:hidden selectors", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( ":visible/:hidden selectors", function( assert ) {
|
||||||
assert.expect( 18 );
|
assert.expect( 18 );
|
||||||
|
|
||||||
var $div, $table, $a, $br;
|
var $div, $table, $a, $br;
|
||||||
@ -1493,7 +1496,12 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( ":visible/:hidden selectors", fu
|
|||||||
$table.css( "display", "none" ).html( "<tr><td>cell</td><td>cell</td></tr>" );
|
$table.css( "display", "none" ).html( "<tr><td>cell</td><td>cell</td></tr>" );
|
||||||
assert.equal( jQuery( "#table td:visible" ).length, 0, "hidden cell children not perceived as visible (#4512)" );
|
assert.equal( jQuery( "#table td:visible" ).length, 0, "hidden cell children not perceived as visible (#4512)" );
|
||||||
|
|
||||||
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
assert.t( "Is Visible", "#qunit-fixture div:visible:lt(2)", [ "foo", "nothiddendiv" ] );
|
assert.t( "Is Visible", "#qunit-fixture div:visible:lt(2)", [ "foo", "nothiddendiv" ] );
|
||||||
|
} else {
|
||||||
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
|
}
|
||||||
|
|
||||||
assert.t( "Is Not Hidden", "#qunit-fixture:hidden", [] );
|
assert.t( "Is Not Hidden", "#qunit-fixture:hidden", [] );
|
||||||
assert.t( "Is Hidden", "#form input:hidden", [ "hidden1", "hidden2" ] );
|
assert.t( "Is Hidden", "#form input:hidden", [ "hidden1", "hidden2" ] );
|
||||||
|
|
||||||
|
16
test/unit/effects.js
vendored
16
test/unit/effects.js
vendored
@ -29,7 +29,7 @@ QUnit.module( "effects", {
|
|||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "sanity check", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "sanity check", function( assert ) {
|
||||||
assert.expect( 1 );
|
assert.expect( 1 );
|
||||||
assert.equal( jQuery( "#qunit-fixture:visible, #foo:visible" ).length, 2, "QUnit state is correct for testing effects" );
|
assert.equal( jQuery( "#qunit-fixture:visible, #foo:visible" ).length, 2, "QUnit state is correct for testing effects" );
|
||||||
} );
|
} );
|
||||||
@ -809,7 +809,7 @@ QUnit.test( "stop( queue, ..., ... ) - Stop single queues", function( assert ) {
|
|||||||
this.clock.tick( 500 );
|
this.clock.tick( 500 );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "toggle()", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "toggle()", function( assert ) {
|
||||||
assert.expect( 6 );
|
assert.expect( 6 );
|
||||||
var x = jQuery( "#foo" );
|
var x = jQuery( "#foo" );
|
||||||
assert.ok( x.is( ":visible" ), "is visible" );
|
assert.ok( x.is( ":visible" ), "is visible" );
|
||||||
@ -1640,7 +1640,7 @@ QUnit.test( "animate should set display for disconnected nodes", function( asser
|
|||||||
clock.tick( 400 );
|
clock.tick( 400 );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "Animation callback should not show animated element as :animated (#7157)", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "Animation callback should not show animated element as :animated (#7157)", function( assert ) {
|
||||||
assert.expect( 1 );
|
assert.expect( 1 );
|
||||||
|
|
||||||
var foo = jQuery( "#foo" );
|
var foo = jQuery( "#foo" );
|
||||||
@ -1653,7 +1653,7 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( "Animation callback should not s
|
|||||||
this.clock.tick( 100 );
|
this.clock.tick( 100 );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "Initial step callback should show element as :animated (#14623)", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "Initial step callback should show element as :animated (#14623)", function( assert ) {
|
||||||
assert.expect( 1 );
|
assert.expect( 1 );
|
||||||
|
|
||||||
var foo = jQuery( "#foo" );
|
var foo = jQuery( "#foo" );
|
||||||
@ -2169,7 +2169,7 @@ QUnit.test( ".finish() completes all queued animations", function( assert ) {
|
|||||||
} );
|
} );
|
||||||
assert.equal( div.queue().length, 0, "empty queue when done" );
|
assert.equal( div.queue().length, 0, "empty queue when done" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.equal( div.is( ":animated" ), false, ":animated doesn't match" );
|
assert.equal( div.is( ":animated" ), false, ":animated doesn't match" );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":animated selector not supported with selector-native" );
|
assert.ok( "skip", ":animated selector not supported with selector-native" );
|
||||||
@ -2209,7 +2209,7 @@ QUnit.test( ".finish( false ) - unqueued animations", function( assert ) {
|
|||||||
assert.equal( parseFloat( div.css( prop ) ), value, prop + " finished at correct value" );
|
assert.equal( parseFloat( div.css( prop ) ), value, prop + " finished at correct value" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.equal( div.is( ":animated" ), false, ":animated doesn't match" );
|
assert.equal( div.is( ":animated" ), false, ":animated doesn't match" );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":animated selector not supported with selector-native" );
|
assert.ok( "skip", ":animated selector not supported with selector-native" );
|
||||||
@ -2248,7 +2248,7 @@ QUnit.test( ".finish( \"custom\" ) - custom queue animations", function( assert
|
|||||||
// start the first animation
|
// start the first animation
|
||||||
div.dequeue( "custom" );
|
div.dequeue( "custom" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.equal( div.is( ":animated" ), true, ":animated matches" );
|
assert.equal( div.is( ":animated" ), true, ":animated matches" );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":animated selector not supported with selector-native" );
|
assert.ok( "skip", ":animated selector not supported with selector-native" );
|
||||||
@ -2259,7 +2259,7 @@ QUnit.test( ".finish( \"custom\" ) - custom queue animations", function( assert
|
|||||||
assert.equal( parseFloat( div.css( prop ) ), value, prop + " finished at correct value" );
|
assert.equal( parseFloat( div.css( prop ) ), value, prop + " finished at correct value" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.equal( div.is( ":animated" ), false, ":animated doesn't match" );
|
assert.equal( div.is( ":animated" ), false, ":animated doesn't match" );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":animated selector not supported with selector-native" );
|
assert.ok( "skip", ":animated selector not supported with selector-native" );
|
||||||
|
@ -1797,7 +1797,7 @@ QUnit.test( "jQuery.off using dispatched jQuery.Event", function( assert ) {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
// selector-native does not support scope-fixing in delegation
|
// selector-native does not support scope-fixing in delegation
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "delegated event with delegateTarget-relative selector", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "delegated event with delegateTarget-relative selector", function( assert ) {
|
||||||
assert.expect( 3 );
|
assert.expect( 3 );
|
||||||
var markup = jQuery( "<div><ul><li><a id=\"a0\"></a><ul id=\"ul0\"><li class=test><a id=\"a0_0\"></a></li><li><a id=\"a0_1\"></a></li></ul></li></ul></div>" ).appendTo( "#qunit-fixture" );
|
var markup = jQuery( "<div><ul><li><a id=\"a0\"></a><ul id=\"ul0\"><li class=test><a id=\"a0_0\"></a></li><li><a id=\"a0_1\"></a></li></ul></li></ul></div>" ).appendTo( "#qunit-fixture" );
|
||||||
|
|
||||||
@ -1815,6 +1815,7 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( "delegated event with delegateTa
|
|||||||
.find( "#a0_0" ).trigger( "click" ).end()
|
.find( "#a0_0" ).trigger( "click" ).end()
|
||||||
.off( "click" );
|
.off( "click" );
|
||||||
|
|
||||||
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
// Positional selector (#11315)
|
// Positional selector (#11315)
|
||||||
markup.find( "ul" ).eq( 0 )
|
markup.find( "ul" ).eq( 0 )
|
||||||
.on( "click", ">li>a", function() {
|
.on( "click", ">li>a", function() {
|
||||||
@ -1827,6 +1828,10 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( "delegated event with delegateTa
|
|||||||
.end()
|
.end()
|
||||||
.find( "a" ).trigger( "click" ).end()
|
.find( "a" ).trigger( "click" ).end()
|
||||||
.find( "#ul0" ).off();
|
.find( "#ul0" ).off();
|
||||||
|
} else {
|
||||||
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
|
}
|
||||||
|
|
||||||
markup.remove();
|
markup.remove();
|
||||||
} );
|
} );
|
||||||
|
@ -1943,7 +1943,7 @@ QUnit.test( "remove() with filters", function( assert ) {
|
|||||||
div.children().remove( "span:nth-child(2n)" );
|
div.children().remove( "span:nth-child(2n)" );
|
||||||
assert.equal( div.text(), "13", "relative selector in remove" );
|
assert.equal( div.text(), "13", "relative selector in remove" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
div = jQuery( markup );
|
div = jQuery( markup );
|
||||||
div.children().remove( "span:first" );
|
div.children().remove( "span:first" );
|
||||||
assert.equal( div.text(), "234", "positional selector in remove" );
|
assert.equal( div.text(), "234", "positional selector in remove" );
|
||||||
@ -1951,8 +1951,8 @@ QUnit.test( "remove() with filters", function( assert ) {
|
|||||||
div.children().remove( "span:last" );
|
div.children().remove( "span:last" );
|
||||||
assert.equal( div.text(), "123", "positional selector in remove" );
|
assert.equal( div.text(), "123", "positional selector in remove" );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", "Positional selectors not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", "Positional selectors not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// using contents will get comments regular, text, and comment nodes
|
// using contents will get comments regular, text, and comment nodes
|
||||||
@ -2040,7 +2040,7 @@ QUnit.test( "detach() with filters", function( assert ) {
|
|||||||
div.children().detach( "span:nth-child(2n)" );
|
div.children().detach( "span:nth-child(2n)" );
|
||||||
assert.equal( div.text(), "13", "relative selector in detach" );
|
assert.equal( div.text(), "13", "relative selector in detach" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
div = jQuery( markup );
|
div = jQuery( markup );
|
||||||
div.children().detach( "span:first" );
|
div.children().detach( "span:first" );
|
||||||
assert.equal( div.text(), "234", "positional selector in detach" );
|
assert.equal( div.text(), "234", "positional selector in detach" );
|
||||||
@ -2048,8 +2048,8 @@ QUnit.test( "detach() with filters", function( assert ) {
|
|||||||
div.children().detach( "span:last" );
|
div.children().detach( "span:last" );
|
||||||
assert.equal( div.text(), "123", "positional selector in detach" );
|
assert.equal( div.text(), "123", "positional selector in detach" );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", "positional selectors not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", "positional selectors not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// using contents will get comments regular, text, and comment nodes
|
// using contents will get comments regular, text, and comment nodes
|
||||||
|
@ -21,7 +21,7 @@ QUnit.test( "empty", function( assert ) {
|
|||||||
form = document.getElementById( "form" );
|
form = document.getElementById( "form" );
|
||||||
assert.ok( !jQuery( form ).is( "" ), "Empty string passed to .is() does not match" );
|
assert.ok( !jQuery( form ).is( "" ), "Empty string passed to .is() does not match" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.equal( jQuery.find( " " ).length, 0, "Empty selector returns an empty array" );
|
assert.equal( jQuery.find( " " ).length, 0, "Empty selector returns an empty array" );
|
||||||
assert.equal( jQuery.find( "\t" ).length, 0, "Empty selector returns an empty array" );
|
assert.equal( jQuery.find( "\t" ).length, 0, "Empty selector returns an empty array" );
|
||||||
} else {
|
} else {
|
||||||
@ -100,10 +100,10 @@ QUnit.test( "element", function( assert ) {
|
|||||||
jQuery( "<h1 id='h1'/><h2 id='h2'/><h2 id='h2-2'/>" ).prependTo( "#qunit-fixture" );
|
jQuery( "<h1 id='h1'/><h2 id='h2'/><h2 id='h2-2'/>" ).prependTo( "#qunit-fixture" );
|
||||||
assert.t( "Checking sort order", "#qunit-fixture h2, #qunit-fixture h1", [ "h1", "h2", "h2-2" ] );
|
assert.t( "Checking sort order", "#qunit-fixture h2, #qunit-fixture h1", [ "h1", "h2", "h2-2" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
assert.t( "Checking sort order", "#qunit-fixture h2:first, #qunit-fixture h1:first", [ "h1", "h2" ] );
|
assert.t( "Checking sort order", "#qunit-fixture h2:first, #qunit-fixture h1:first", [ "h1", "h2" ] );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":first not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.t( "Checking sort order", "#qunit-fixture p, #qunit-fixture p a",
|
assert.t( "Checking sort order", "#qunit-fixture p, #qunit-fixture p a",
|
||||||
@ -119,7 +119,7 @@ QUnit.test( "element", function( assert ) {
|
|||||||
assert.deepEqual( jQuery.find( "input[id='idTest']", lengthtest ), q( "idTest" ),
|
assert.deepEqual( jQuery.find( "input[id='idTest']", lengthtest ), q( "idTest" ),
|
||||||
"Finding elements with id of ID." );
|
"Finding elements with id of ID." );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
siblingTest = document.getElementById( "siblingTest" );
|
siblingTest = document.getElementById( "siblingTest" );
|
||||||
assert.deepEqual( jQuery.find( "div em", siblingTest ), [],
|
assert.deepEqual( jQuery.find( "div em", siblingTest ), [],
|
||||||
"Element-rooted QSA does not select based on document context" );
|
"Element-rooted QSA does not select based on document context" );
|
||||||
@ -165,7 +165,7 @@ QUnit.test( "XML Document Selectors", function( assert ) {
|
|||||||
"Attribute selector filter with ID" );
|
"Attribute selector filter with ID" );
|
||||||
assert.equal( jQuery.find( "meta property thing", xml ).length, 2,
|
assert.equal( jQuery.find( "meta property thing", xml ).length, 2,
|
||||||
"Descendent selector and dir caching" );
|
"Descendent selector and dir caching" );
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.ok( jQuery( xml.lastChild ).is( "soap\\:Envelope" ), "Check for namespaced element" );
|
assert.ok( jQuery( xml.lastChild ).is( "soap\\:Envelope" ), "Check for namespaced element" );
|
||||||
|
|
||||||
xml = jQuery.parseXML( "<?xml version='1.0' encoding='UTF-8'?><root><elem id='1'/></root>" );
|
xml = jQuery.parseXML( "<?xml version='1.0' encoding='UTF-8'?><root><elem id='1'/></root>" );
|
||||||
@ -179,7 +179,7 @@ QUnit.test( "XML Document Selectors", function( assert ) {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit.test( "broken selectors throw", function( assert ) {
|
QUnit.test( "broken selectors throw", function( assert ) {
|
||||||
assert.expect( 31 );
|
assert.expect( 32 );
|
||||||
|
|
||||||
function broken( name, selector ) {
|
function broken( name, selector ) {
|
||||||
assert.throws( function() {
|
assert.throws( function() {
|
||||||
@ -197,6 +197,7 @@ QUnit.test( "broken selectors throw", function( assert ) {
|
|||||||
broken( "Broken Selector", "," );
|
broken( "Broken Selector", "," );
|
||||||
broken( "Broken Selector", ",a" );
|
broken( "Broken Selector", ",a" );
|
||||||
broken( "Broken Selector", "a," );
|
broken( "Broken Selector", "a," );
|
||||||
|
broken( "Identifier with bad escape", "foo\\\fbaz" );
|
||||||
broken( "Broken Selector", "[id=012345678901234567890123456789" );
|
broken( "Broken Selector", "[id=012345678901234567890123456789" );
|
||||||
broken( "Doesn't exist", ":visble" );
|
broken( "Doesn't exist", ":visble" );
|
||||||
broken( "Nth-child", ":nth-child" );
|
broken( "Nth-child", ":nth-child" );
|
||||||
@ -243,7 +244,7 @@ QUnit.test( "id", function( assert ) {
|
|||||||
|
|
||||||
assert.t( "Escaped ID", "#foo\\:bar", [ "foo:bar" ] );
|
assert.t( "Escaped ID", "#foo\\:bar", [ "foo:bar" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Escaped ID with descendant", "#foo\\:bar span:not(:input)", [ "foo_descendant" ] );
|
assert.t( "Escaped ID with descendant", "#foo\\:bar span:not(:input)", [ "foo_descendant" ] );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":input not supported in selector-native" );
|
assert.ok( "skip", ":input not supported in selector-native" );
|
||||||
@ -258,7 +259,7 @@ QUnit.test( "id", function( assert ) {
|
|||||||
fiddle = jQuery( "<div id='fiddle\\Foo'><span id='fiddleSpan'></span></div>" )
|
fiddle = jQuery( "<div id='fiddle\\Foo'><span id='fiddleSpan'></span></div>" )
|
||||||
.appendTo( "#qunit-fixture" );
|
.appendTo( "#qunit-fixture" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.deepEqual( jQuery.find( "> span", jQuery( "#fiddle\\\\Foo" )[ 0 ] ),
|
assert.deepEqual( jQuery.find( "> span", jQuery( "#fiddle\\\\Foo" )[ 0 ] ),
|
||||||
q( [ "fiddleSpan" ] ), "Escaped ID as context" );
|
q( [ "fiddleSpan" ] ), "Escaped ID as context" );
|
||||||
} else {
|
} else {
|
||||||
@ -448,20 +449,24 @@ QUnit.test( "child and adjacent", function( assert ) {
|
|||||||
|
|
||||||
siblingFirst = document.getElementById( "siblingfirst" );
|
siblingFirst = document.getElementById( "siblingfirst" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.deepEqual( jQuery.find( "+ em", siblingFirst ), q( "siblingnext" ),
|
assert.deepEqual( jQuery.find( "+ em", siblingFirst ), q( "siblingnext" ),
|
||||||
"Element Directly Preceded By with a context." );
|
"Element Directly Preceded By with a context." );
|
||||||
assert.deepEqual( jQuery.find( "~ em", siblingFirst ), q( "siblingnext", "siblingthird" ),
|
assert.deepEqual( jQuery.find( "~ em", siblingFirst ), q( "siblingnext", "siblingthird" ),
|
||||||
"Element Preceded By with a context." );
|
"Element Preceded By with a context." );
|
||||||
assert.deepEqual( jQuery.find( "~ em:first", siblingFirst ), q( "siblingnext" ),
|
|
||||||
"Element Preceded By positional with a context." );
|
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", "leading + not supported in selector-native" );
|
assert.ok( "skip", "leading + not supported in selector-native" );
|
||||||
assert.ok( "skip", "leading ~ not supported in selector-native" );
|
assert.ok( "skip", "leading ~ not supported in selector-native" );
|
||||||
assert.ok( "skip", "leading ~ not supported in selector-native" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
|
assert.deepEqual( jQuery.find( "~ em:first", siblingFirst ), q( "siblingnext" ),
|
||||||
|
"Element Preceded By positional with a context." );
|
||||||
|
} else {
|
||||||
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( QUnit.jQuerySelectors ) {
|
||||||
en = document.getElementById( "en" );
|
en = document.getElementById( "en" );
|
||||||
assert.deepEqual( jQuery.find( "+ p, a", en ), q( "yahoo", "sap" ),
|
assert.deepEqual( jQuery.find( "+ p, a", en ), q( "yahoo", "sap" ),
|
||||||
"Compound selector with context, beginning with sibling test." );
|
"Compound selector with context, beginning with sibling test." );
|
||||||
@ -472,9 +477,15 @@ QUnit.test( "child and adjacent", function( assert ) {
|
|||||||
assert.ok( "skip", "leading + not supported in selector-native" );
|
assert.ok( "skip", "leading + not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Element Preceded By, Containing", "#liveHandlerOrder ~ div em:contains('1')", [ "siblingfirst" ] );
|
assert.t( "Element Preceded By, Containing", "#liveHandlerOrder ~ div em:contains('1')", [ "siblingfirst" ] );
|
||||||
assert.t( "Combinators are not skipped when mixing general and specific", "#siblingTest > em:contains('x') + em ~ span", [] );
|
assert.t( "Combinators are not skipped when mixing general and specific", "#siblingTest > em:contains('x') + em ~ span", [] );
|
||||||
|
} else {
|
||||||
|
assert.ok( "skip", ":contains not supported in selector-native" );
|
||||||
|
assert.ok( "skip", ":contains not supported in selector-native" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
assert.equal( jQuery( "#listWithTabIndex li:eq(2) ~ li" ).length, 1, "Find by general sibling combinator (#8310)" );
|
assert.equal( jQuery( "#listWithTabIndex li:eq(2) ~ li" ).length, 1, "Find by general sibling combinator (#8310)" );
|
||||||
|
|
||||||
nothiddendiv = document.getElementById( "nothiddendiv" );
|
nothiddendiv = document.getElementById( "nothiddendiv" );
|
||||||
@ -484,14 +495,11 @@ QUnit.test( "child and adjacent", function( assert ) {
|
|||||||
"Verify child context positional selector" );
|
"Verify child context positional selector" );
|
||||||
assert.deepEqual( jQuery.find( "> *:first", nothiddendiv ), q( "nothiddendivchild" ),
|
assert.deepEqual( jQuery.find( "> *:first", nothiddendiv ), q( "nothiddendivchild" ),
|
||||||
"Verify child context positional selector" );
|
"Verify child context positional selector" );
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":contains not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":contains not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":eq not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":first not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":eq not supported in selector-native" );
|
|
||||||
assert.ok( "skip", ":first not supported in selector-native" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.t( "Multiple combinators selects all levels", "#siblingTest em *", [ "siblingchild", "siblinggrandchild", "siblinggreatgrandchild" ] );
|
assert.t( "Multiple combinators selects all levels", "#siblingTest em *", [ "siblingchild", "siblinggrandchild", "siblinggreatgrandchild" ] );
|
||||||
@ -531,15 +539,15 @@ QUnit.test( "attributes - equals", function( assert ) {
|
|||||||
assert.t( "Non-identifier string", "#qunit-fixture a[href='http://www.google.com/']", [ "google" ] );
|
assert.t( "Non-identifier string", "#qunit-fixture a[href='http://www.google.com/']", [ "google" ] );
|
||||||
assert.t( "Empty string", "#select1 option[value='']", [ "option1a" ] );
|
assert.t( "Empty string", "#select1 option[value='']", [ "option1a" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Number",
|
assert.t( "Number",
|
||||||
"#qunit-fixture option[value=1]",
|
"#qunit-fixture option[value=1]",
|
||||||
[ "option1b", "option2b", "option3b", "option4b", "option5c" ] );
|
[ "option1b", "option2b", "option3b", "option4b", "option5c" ] );
|
||||||
assert.t( "negative number",
|
assert.t( "negative number",
|
||||||
"#qunit-fixture li[tabIndex=-1]", [ "foodWithNegativeTabIndex" ] );
|
"#qunit-fixture li[tabIndex=-1]", [ "foodWithNegativeTabIndex" ] );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( true, "Number value not supported in selector-native" );
|
assert.ok( "skip", "Number value not supported in selector-native" );
|
||||||
assert.ok( true, "Negative number value not supported in selector-native" );
|
assert.ok( "skip", "Negative number value not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
assert.t( "Non-ASCII identifier", "span[lang=中文]", [ "台北" ] );
|
assert.t( "Non-ASCII identifier", "span[lang=中文]", [ "台北" ] );
|
||||||
@ -573,7 +581,7 @@ QUnit.test( "attributes - equals", function( assert ) {
|
|||||||
"With context, double-quoted attribute containing ','" );
|
"With context, double-quoted attribute containing ','" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "attributes - does not equal", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "attributes - does not equal", function( assert ) {
|
||||||
assert.expect( 2 );
|
assert.expect( 2 );
|
||||||
|
|
||||||
assert.t( "string", "#ap a[hreflang!='en']", [ "google", "groups", "anchor1" ] );
|
assert.t( "string", "#ap a[hreflang!='en']", [ "google", "groups", "anchor1" ] );
|
||||||
@ -740,7 +748,7 @@ QUnit.test( "pseudo - (parent|empty)", function( assert ) {
|
|||||||
assert.t( "Empty", "#qunit-fixture ul:empty", [ "firstUL" ] );
|
assert.t( "Empty", "#qunit-fixture ul:empty", [ "firstUL" ] );
|
||||||
assert.t( "Empty with comment node", "#qunit-fixture ol:empty", [ "empty" ] );
|
assert.t( "Empty with comment node", "#qunit-fixture ol:empty", [ "empty" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Is A Parent", "#qunit-fixture p:parent",
|
assert.t( "Is A Parent", "#qunit-fixture p:parent",
|
||||||
[ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
[ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
||||||
} else {
|
} else {
|
||||||
@ -808,7 +816,7 @@ QUnit.test( "pseudo - nth-child", function( assert ) {
|
|||||||
assert.t( "Nth-child(-n+3)", "#form #select1 option:nth-child(-n+3)", [ "option1a", "option1b", "option1c" ] );
|
assert.t( "Nth-child(-n+3)", "#form #select1 option:nth-child(-n+3)", [ "option1a", "option1b", "option1c" ] );
|
||||||
assert.t( "Nth-child(-1n + 3)", "#form #select1 option:nth-child(-1n + 3)", [ "option1a", "option1b", "option1c" ] );
|
assert.t( "Nth-child(-1n + 3)", "#form #select1 option:nth-child(-1n + 3)", [ "option1a", "option1b", "option1c" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile || this.safari ) {
|
if ( QUnit.jQuerySelectors || this.safari ) {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
jQuery.find( ":nth-child(n)", null, null,
|
jQuery.find( ":nth-child(n)", null, null,
|
||||||
[ document.createElement( "a" ) ].concat( q( "ap" ) ) ),
|
[ document.createElement( "a" ) ].concat( q( "ap" ) ) ),
|
||||||
@ -860,7 +868,7 @@ QUnit.test( "pseudo - nth-last-child", function( assert ) {
|
|||||||
assert.t( "Nth-last-child(-n+3)", "#form #select1 option:nth-last-child(-n+3)", [ "option1b", "option1c", "option1d" ] );
|
assert.t( "Nth-last-child(-n+3)", "#form #select1 option:nth-last-child(-n+3)", [ "option1b", "option1c", "option1d" ] );
|
||||||
assert.t( "Nth-last-child(-1n + 3)", "#form #select1 option:nth-last-child(-1n + 3)", [ "option1b", "option1c", "option1d" ] );
|
assert.t( "Nth-last-child(-1n + 3)", "#form #select1 option:nth-last-child(-1n + 3)", [ "option1b", "option1c", "option1d" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile || this.safari ) {
|
if ( QUnit.jQuerySelectors || this.safari ) {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
jQuery.find(
|
jQuery.find(
|
||||||
":nth-last-child(n)",
|
":nth-last-child(n)",
|
||||||
@ -905,7 +913,7 @@ QUnit.test( "pseudo - nth-last-of-type", function( assert ) {
|
|||||||
assert.t( "Nth-last-of-type(-n+2)", "#qunit-fixture > :nth-last-of-type(-n+2)", [ "ap", "name+value", "first", "firstUL", "empty", "floatTest", "iframe", "table", "testForm", "disabled-tests", "siblingTest", "fx-test-group", "last" ] );
|
assert.t( "Nth-last-of-type(-n+2)", "#qunit-fixture > :nth-last-of-type(-n+2)", [ "ap", "name+value", "first", "firstUL", "empty", "floatTest", "iframe", "table", "testForm", "disabled-tests", "siblingTest", "fx-test-group", "last" ] );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "pseudo - has", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "pseudo - has", function( assert ) {
|
||||||
assert.expect( 3 );
|
assert.expect( 3 );
|
||||||
|
|
||||||
assert.t( "Basic test", "p:has(a)", [ "firstp", "ap", "en", "sap" ] );
|
assert.t( "Basic test", "p:has(a)", [ "firstp", "ap", "en", "sap" ] );
|
||||||
@ -915,7 +923,7 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( "pseudo - has", function( assert
|
|||||||
[ "moretests", "t2037", "fx-test-group", "fx-queue" ] );
|
[ "moretests", "t2037", "fx-test-group", "fx-queue" ] );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "pseudo - contains", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "pseudo - contains", function( assert ) {
|
||||||
assert.expect( 9 );
|
assert.expect( 9 );
|
||||||
|
|
||||||
var gh335 = document.getElementById( "qunit-fixture" ).appendChild(
|
var gh335 = document.getElementById( "qunit-fixture" ).appendChild(
|
||||||
@ -947,7 +955,7 @@ QUnit.test( "pseudo - misc", function( assert ) {
|
|||||||
|
|
||||||
jQuery( "<h1 id='h1'/><h2 id='h2'/><h2 id='h2-2'/>" ).prependTo( "#qunit-fixture" );
|
jQuery( "<h1 id='h1'/><h2 id='h2'/><h2 id='h2-2'/>" ).prependTo( "#qunit-fixture" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Headers", "#qunit-fixture :header", [ "h1", "h2", "h2-2" ] );
|
assert.t( "Headers", "#qunit-fixture :header", [ "h1", "h2", "h2-2" ] );
|
||||||
assert.t( "Headers(case-insensitive)", "#qunit-fixture :Header", [ "h1", "h2", "h2-2" ] );
|
assert.t( "Headers(case-insensitive)", "#qunit-fixture :Header", [ "h1", "h2", "h2-2" ] );
|
||||||
} else {
|
} else {
|
||||||
@ -955,7 +963,7 @@ QUnit.test( "pseudo - misc", function( assert ) {
|
|||||||
assert.ok( "skip", ":header not supported in selector-native" );
|
assert.ok( "skip", ":header not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Multiple matches with the same context (cache check)",
|
assert.t( "Multiple matches with the same context (cache check)",
|
||||||
"#form select:has(option:first-child:contains('o'))",
|
"#form select:has(option:first-child:contains('o'))",
|
||||||
[ "select1", "select2", "select3", "select4" ]
|
[ "select1", "select2", "select3", "select4" ]
|
||||||
@ -980,7 +988,7 @@ QUnit.test( "pseudo - misc", function( assert ) {
|
|||||||
.replace( /%/g, type )
|
.replace( /%/g, type )
|
||||||
).appendTo( tmp );
|
).appendTo( tmp );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Input Buttons :" + type, "#tmp_input :" + type, [ "input_" + type, "button_" + type ] );
|
assert.t( "Input Buttons :" + type, "#tmp_input :" + type, [ "input_" + type, "button_" + type ] );
|
||||||
|
|
||||||
assert.ok( jQuery( els[ 0 ] ).is( ":" + type ), "Input Matches :" + type );
|
assert.ok( jQuery( els[ 0 ] ).is( ":" + type ), "Input Matches :" + type );
|
||||||
@ -1053,7 +1061,7 @@ QUnit.test( "pseudo - misc", function( assert ) {
|
|||||||
"caching system tolerates recursive selection"
|
"caching system tolerates recursive selection"
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
// Tokenization edge cases
|
// Tokenization edge cases
|
||||||
assert.t( "Sequential pseudos", "#qunit-fixture p:has(:contains(mark)):has(code)", [ "ap" ] );
|
assert.t( "Sequential pseudos", "#qunit-fixture p:has(:contains(mark)):has(code)", [ "ap" ] );
|
||||||
assert.t( "Sequential pseudos", "#qunit-fixture p:has(:contains(mark)):has(code):contains(This link)", [ "ap" ] );
|
assert.t( "Sequential pseudos", "#qunit-fixture p:has(:contains(mark)):has(code):contains(This link)", [ "ap" ] );
|
||||||
@ -1064,9 +1072,7 @@ QUnit.test( "pseudo - misc", function( assert ) {
|
|||||||
assert.t( "Pseudo followed by token containing ')'", "p:contains(id=\"foo\")[id!=')']", [ "sndp" ] );
|
assert.t( "Pseudo followed by token containing ')'", "p:contains(id=\"foo\")[id!=')']", [ "sndp" ] );
|
||||||
|
|
||||||
assert.t( "Multi-pseudo", "#ap:has(*), #ap:has(*)", [ "ap" ] );
|
assert.t( "Multi-pseudo", "#ap:has(*), #ap:has(*)", [ "ap" ] );
|
||||||
assert.t( "Multi-positional", "#ap:gt(0), #ap:lt(1)", [ "ap" ] );
|
|
||||||
assert.t( "Multi-pseudo with leading nonexistent id", "#nonexistent:has(*), #ap:has(*)", [ "ap" ] );
|
assert.t( "Multi-pseudo with leading nonexistent id", "#nonexistent:has(*), #ap:has(*)", [ "ap" ] );
|
||||||
assert.t( "Multi-positional with leading nonexistent id", "#nonexistent:gt(0), #ap:lt(1)", [ "ap" ] );
|
|
||||||
|
|
||||||
assert.t( "Tokenization stressor", "a[class*=blog]:not(:has(*, :contains(!)), :contains(!)), br:contains(]), p:contains(]), :not(:empty):not(:parent)", [ "ap", "mark", "yahoo", "simon" ] );
|
assert.t( "Tokenization stressor", "a[class*=blog]:not(:has(*, :contains(!)), :contains(!)), br:contains(]), p:contains(]), :not(:empty):not(:parent)", [ "ap", "mark", "yahoo", "simon" ] );
|
||||||
} else {
|
} else {
|
||||||
@ -1079,12 +1085,18 @@ QUnit.test( "pseudo - misc", function( assert ) {
|
|||||||
assert.ok( "skip", ":contains not supported in selector-native" );
|
assert.ok( "skip", ":contains not supported in selector-native" );
|
||||||
|
|
||||||
assert.ok( "skip", ":has not supported in selector-native" );
|
assert.ok( "skip", ":has not supported in selector-native" );
|
||||||
assert.ok( "skip", ":lt & :gt not supported in selector-native" );
|
|
||||||
assert.ok( "skip", ":has supported in selector-native" );
|
assert.ok( "skip", ":has supported in selector-native" );
|
||||||
assert.ok( "skip", ":lt & :gt not supported in selector-native" );
|
|
||||||
|
|
||||||
assert.ok( "skip", ":has not supported in selector-native" );
|
assert.ok( "skip", ":has not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
|
assert.t( "Multi-positional", "#ap:gt(0), #ap:lt(1)", [ "ap" ] );
|
||||||
|
assert.t( "Multi-positional with leading nonexistent id", "#nonexistent:gt(0), #ap:lt(1)", [ "ap" ] );
|
||||||
|
} else {
|
||||||
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit.test( "pseudo - :not", function( assert ) {
|
QUnit.test( "pseudo - :not", function( assert ) {
|
||||||
@ -1092,22 +1104,24 @@ QUnit.test( "pseudo - :not", function( assert ) {
|
|||||||
|
|
||||||
assert.t( "Not", "a.blog:not(.link)", [ "mark" ] );
|
assert.t( "Not", "a.blog:not(.link)", [ "mark" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( ":not() with :first", "#foo p:not(:first) .link", [ "simon" ] );
|
|
||||||
|
|
||||||
assert.t( "Not - multiple", "#form option:not(:contains(Nothing),#option1b,:selected)", [ "option1c", "option1d", "option2b", "option2c", "option3d", "option3e", "option4e", "option5b", "option5c" ] );
|
assert.t( "Not - multiple", "#form option:not(:contains(Nothing),#option1b,:selected)", [ "option1c", "option1d", "option2b", "option2c", "option3d", "option3e", "option4e", "option5b", "option5c" ] );
|
||||||
assert.t( "Not - recursive", "#form option:not(:not(:selected))[id^='option3']", [ "option3b", "option3c" ] );
|
assert.t( "Not - recursive", "#form option:not(:not(:selected))[id^='option3']", [ "option3b", "option3c" ] );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":first not supported in selector-native" );
|
|
||||||
|
|
||||||
assert.ok( "skip", ":contains not supported in selector-native" );
|
assert.ok( "skip", ":contains not supported in selector-native" );
|
||||||
assert.ok( "skip", ":selected not supported in selector-native" );
|
assert.ok( "skip", ":selected not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
|
assert.t( ":not() with :first", "#foo p:not(:first) .link", [ "simon" ] );
|
||||||
|
} else {
|
||||||
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
|
}
|
||||||
|
|
||||||
assert.t( ":not() failing interior", "#qunit-fixture p:not(.foo)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
assert.t( ":not() failing interior", "#qunit-fixture p:not(.foo)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
||||||
assert.t( ":not() failing interior", "#qunit-fixture p:not(#blargh)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
assert.t( ":not() failing interior", "#qunit-fixture p:not(#blargh)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile || this.safari ) {
|
if ( QUnit.jQuerySelectors || this.safari ) {
|
||||||
assert.t( ":not() failing interior", "#qunit-fixture p:not(div.foo)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
assert.t( ":not() failing interior", "#qunit-fixture p:not(div.foo)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
||||||
assert.t( ":not() failing interior", "#qunit-fixture p:not(p.foo)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
assert.t( ":not() failing interior", "#qunit-fixture p:not(p.foo)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
||||||
assert.t( ":not() failing interior", "#qunit-fixture p:not(div#blargh)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
assert.t( ":not() failing interior", "#qunit-fixture p:not(div#blargh)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
||||||
@ -1126,7 +1140,7 @@ QUnit.test( "pseudo - :not", function( assert ) {
|
|||||||
assert.t( ":not Multiple", "#qunit-fixture p:not( p )", [] );
|
assert.t( ":not Multiple", "#qunit-fixture p:not( p )", [] );
|
||||||
assert.t( ":not Multiple", "p:not(p)", [] );
|
assert.t( ":not Multiple", "p:not(p)", [] );
|
||||||
|
|
||||||
if ( jQuery.find.compile || this.safari ) {
|
if ( QUnit.jQuerySelectors || this.safari ) {
|
||||||
assert.t( ":not Multiple", "#qunit-fixture p:not(a, b)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
assert.t( ":not Multiple", "#qunit-fixture p:not(a, b)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
||||||
assert.t( ":not Multiple", "#qunit-fixture p:not(a, b, div)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
assert.t( ":not Multiple", "#qunit-fixture p:not(a, b, div)", [ "firstp", "ap", "sndp", "en", "sap", "first" ] );
|
||||||
assert.t( ":not Multiple", "p:not(a,p)", [] );
|
assert.t( ":not Multiple", "p:not(a,p)", [] );
|
||||||
@ -1142,7 +1156,7 @@ QUnit.test( "pseudo - :not", function( assert ) {
|
|||||||
assert.ok( "skip", ":not(complex selector) not supported in selector-native" );
|
assert.ok( "skip", ":not(complex selector) not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( ":not Multiple", ":input:not(:image,:input,:submit)", [] );
|
assert.t( ":not Multiple", ":input:not(:image,:input,:submit)", [] );
|
||||||
assert.t( ":not Multiple", "#qunit-fixture p:not(:has(a), :nth-child(1))", [ "first" ] );
|
assert.t( ":not Multiple", "#qunit-fixture p:not(:has(a), :nth-child(1))", [ "first" ] );
|
||||||
} else {
|
} else {
|
||||||
@ -1159,7 +1173,7 @@ QUnit.test( "pseudo - :not", function( assert ) {
|
|||||||
assert.t( ":not() Multiple Class", "#foo a:not(.blog)", [ "yahoo", "anchor2" ] );
|
assert.t( ":not() Multiple Class", "#foo a:not(.blog)", [ "yahoo", "anchor2" ] );
|
||||||
assert.t( ":not() Multiple Class", "#foo a:not(.link)", [ "yahoo", "anchor2" ] );
|
assert.t( ":not() Multiple Class", "#foo a:not(.link)", [ "yahoo", "anchor2" ] );
|
||||||
|
|
||||||
if ( jQuery.find.compile || this.safari ) {
|
if ( QUnit.jQuerySelectors || this.safari ) {
|
||||||
assert.t( ":not() Multiple Class", "#foo a:not(.blog.link)", [ "yahoo", "anchor2" ] );
|
assert.t( ":not() Multiple Class", "#foo a:not(.blog.link)", [ "yahoo", "anchor2" ] );
|
||||||
} else {
|
} else {
|
||||||
// Support: Chrome 75+, Firefox 67+
|
// Support: Chrome 75+, Firefox 67+
|
||||||
@ -1167,7 +1181,7 @@ QUnit.test( "pseudo - :not", function( assert ) {
|
|||||||
assert.ok( "skip", ":not(complex selector) not supported in selector-native" );
|
assert.ok( "skip", ":not(complex selector) not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( ":not chaining (compound)", "#qunit-fixture div[id]:not(:has(div, span)):not(:has(*))", [ "nothiddendivchild", "divWithNoTabIndex", "fx-tests" ] );
|
assert.t( ":not chaining (compound)", "#qunit-fixture div[id]:not(:has(div, span)):not(:has(*))", [ "nothiddendivchild", "divWithNoTabIndex", "fx-tests" ] );
|
||||||
assert.t( ":not chaining (with attribute)", "#qunit-fixture form[id]:not([action$='formaction']):not(:button)", [ "lengthtest", "name-tests", "testForm", "disabled-tests" ] );
|
assert.t( ":not chaining (with attribute)", "#qunit-fixture form[id]:not([action$='formaction']):not(:button)", [ "lengthtest", "name-tests", "testForm", "disabled-tests" ] );
|
||||||
assert.t( ":not chaining (colon in attribute)", "#qunit-fixture form[id]:not([action='form:action']):not(:button)", [ "form", "lengthtest", "name-tests", "testForm", "disabled-tests" ] );
|
assert.t( ":not chaining (colon in attribute)", "#qunit-fixture form[id]:not([action='form:action']):not(:button)", [ "form", "lengthtest", "name-tests", "testForm", "disabled-tests" ] );
|
||||||
@ -1181,7 +1195,7 @@ QUnit.test( "pseudo - :not", function( assert ) {
|
|||||||
assert.ok( "skip", ":contains not supported in selector-native" );
|
assert.ok( "skip", ":contains not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
assert.t( "positional :not()", "#foo p:not(:last)", [ "sndp", "en" ] );
|
assert.t( "positional :not()", "#foo p:not(:last)", [ "sndp", "en" ] );
|
||||||
assert.t( "positional :not() prefix", "#foo p:not(:last) a", [ "yahoo" ] );
|
assert.t( "positional :not() prefix", "#foo p:not(:last) a", [ "yahoo" ] );
|
||||||
assert.t( "compound positional :not()", "#foo p:not(:first, :last)", [ "en" ] );
|
assert.t( "compound positional :not()", "#foo p:not(:first, :last)", [ "en" ] );
|
||||||
@ -1194,21 +1208,21 @@ QUnit.test( "pseudo - :not", function( assert ) {
|
|||||||
assert.t( "positional :not() with pre-filter", "#foo p:not([lang]:first)", [ "sndp", "sap" ] );
|
assert.t( "positional :not() with pre-filter", "#foo p:not([lang]:first)", [ "sndp", "sap" ] );
|
||||||
assert.t( "positional :not() with post-filter", "#foo p:not(:first[lang])", [ "sndp", "en", "sap" ] );
|
assert.t( "positional :not() with post-filter", "#foo p:not(:first[lang])", [ "sndp", "en", "sap" ] );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":last not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":last not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":first, :last not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":first, :even not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":first, :odd not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":first, :odd not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
|
|
||||||
assert.ok( "skip", ":first not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":first not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":first not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
assert.ok( "skip", ":first not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "pseudo - position", function( assert ) {
|
QUnit[ QUnit.jQuerySelectorsPos ? "test" : "skip" ]( "pseudo - position", function( assert ) {
|
||||||
assert.expect( 34 );
|
assert.expect( 34 );
|
||||||
|
|
||||||
assert.t( "First element", "#qunit-fixture p:first", [ "firstp" ] );
|
assert.t( "First element", "#qunit-fixture p:first", [ "firstp" ] );
|
||||||
@ -1262,7 +1276,7 @@ QUnit.test( "pseudo - form", function( assert ) {
|
|||||||
|
|
||||||
var extraTexts = jQuery( "<input id=\"impliedText\"/><input id=\"capitalText\" type=\"TEXT\">" ).appendTo( "#form" );
|
var extraTexts = jQuery( "<input id=\"impliedText\"/><input id=\"capitalText\" type=\"TEXT\">" ).appendTo( "#form" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Form element :radio", "#form :radio", [ "radio1", "radio2" ] );
|
assert.t( "Form element :radio", "#form :radio", [ "radio1", "radio2" ] );
|
||||||
assert.t( "Form element :checkbox", "#form :checkbox", [ "check1", "check2" ] );
|
assert.t( "Form element :checkbox", "#form :checkbox", [ "check1", "check2" ] );
|
||||||
assert.t( "Form element :text", "#form :text", [ "text1", "text2", "hidden2", "name", "impliedText", "capitalText" ] );
|
assert.t( "Form element :text", "#form :text", [ "text1", "text2", "hidden2", "name", "impliedText", "capitalText" ] );
|
||||||
@ -1278,7 +1292,7 @@ QUnit.test( "pseudo - form", function( assert ) {
|
|||||||
assert.ok( "skip", ":radio not supported in selector-native" );
|
assert.ok( "skip", ":radio not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Selected option element",
|
assert.t( "Selected option element",
|
||||||
"#form option:selected",
|
"#form option:selected",
|
||||||
[ "option1a", "option2d", "option3b", "option3c", "option4b", "option4c", "option4d",
|
[ "option1a", "option2d", "option3b", "option3c", "option4b", "option4c", "option4d",
|
||||||
@ -1295,7 +1309,7 @@ QUnit.test( "pseudo - form", function( assert ) {
|
|||||||
assert.ok( "skip", ":selected not supported in selector-native" );
|
assert.ok( "skip", ":selected not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.t( "Form element :input", "#form :input", [ "text1", "text2", "radio1", "radio2", "check1", "check2", "hidden1", "hidden2", "name", "search", "button", "area1", "select1", "select2", "select3", "select4", "select5", "impliedText", "capitalText" ] );
|
assert.t( "Form element :input", "#form :input", [ "text1", "text2", "radio1", "radio2", "check1", "check2", "hidden1", "hidden2", "name", "search", "button", "area1", "select1", "select2", "select3", "select4", "select5", "impliedText", "capitalText" ] );
|
||||||
|
|
||||||
// trac-12600
|
// trac-12600
|
||||||
@ -1345,7 +1359,7 @@ QUnit.test( "pseudo - :(dis|en)abled, explicitly disabled", function( assert ) {
|
|||||||
"disabled-select", "disabled-optgroup", "disabled-option" ]
|
"disabled-select", "disabled-optgroup", "disabled-option" ]
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( jQuery.find.compile || !this.chrome ) {
|
if ( QUnit.jQuerySelectors || !this.chrome ) {
|
||||||
// Support: Chrome 75+
|
// Support: Chrome 75+
|
||||||
// Chrome recognizes anchor elements as enabled.
|
// Chrome recognizes anchor elements as enabled.
|
||||||
assert.t(
|
assert.t(
|
||||||
@ -1355,7 +1369,7 @@ QUnit.test( "pseudo - :(dis|en)abled, explicitly disabled", function( assert ) {
|
|||||||
"enabled-select", "enabled-optgroup", "enabled-option" ]
|
"enabled-select", "enabled-optgroup", "enabled-option" ]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
assert.ok( true, ":enabled broken in Chrome in selector-native" );
|
assert.ok( "skip", ":enabled broken in Chrome in selector-native" );
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
@ -1419,7 +1433,7 @@ QUnit.test( "pseudo - :target and :root", function( assert ) {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit.test( "pseudo - :lang", function( assert ) {
|
QUnit.test( "pseudo - :lang", function( assert ) {
|
||||||
assert.expect( jQuery.find.compile ? 105 : 55 );
|
assert.expect( QUnit.jQuerySelectors ? 105 : 55 );
|
||||||
|
|
||||||
var docElem = document.documentElement,
|
var docElem = document.documentElement,
|
||||||
docXmlLang = docElem.getAttribute( "xml:lang" ),
|
docXmlLang = docElem.getAttribute( "xml:lang" ),
|
||||||
@ -1498,7 +1512,7 @@ QUnit.test( "pseudo - :lang", function( assert ) {
|
|||||||
jQuery.find( "#qunit-fixture:lang(c++)" );
|
jQuery.find( "#qunit-fixture:lang(c++)" );
|
||||||
}, ":lang value must be a valid identifier" );
|
}, ":lang value must be a valid identifier" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
|
|
||||||
// XML
|
// XML
|
||||||
foo = jQuery( "response", xml )[ 0 ];
|
foo = jQuery( "response", xml )[ 0 ];
|
||||||
@ -1543,7 +1557,7 @@ QUnit.test( "context", function( assert ) {
|
|||||||
expected = [ iframeDoc.getElementById( "foo" ) ];
|
expected = [ iframeDoc.getElementById( "foo" ) ];
|
||||||
assert.deepEqual( jQuery.find( "p", iframeDoc ), expected, "Other document context (simple)" );
|
assert.deepEqual( jQuery.find( "p", iframeDoc ), expected, "Other document context (simple)" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.deepEqual( jQuery.find( "p:contains(ar)", iframeDoc ), expected,
|
assert.deepEqual( jQuery.find( "p:contains(ar)", iframeDoc ), expected,
|
||||||
"Other document context (complex)" );
|
"Other document context (complex)" );
|
||||||
} else {
|
} else {
|
||||||
@ -1558,7 +1572,7 @@ QUnit.test( "context", function( assert ) {
|
|||||||
context = document.getElementById( "nothiddendiv" );
|
context = document.getElementById( "nothiddendiv" );
|
||||||
assert.deepEqual( jQuery.find( "*", context ), q( "nothiddendivchild" ), "<div> context" );
|
assert.deepEqual( jQuery.find( "*", context ), q( "nothiddendivchild" ), "<div> context" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.deepEqual( jQuery.find( "* > *", context ), [], "<div> context (no results)" );
|
assert.deepEqual( jQuery.find( "* > *", context ), [], "<div> context (no results)" );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", "The whole selector not required to be under context in selector-native" );
|
assert.ok( "skip", "The whole selector not required to be under context in selector-native" );
|
||||||
@ -1567,7 +1581,7 @@ QUnit.test( "context", function( assert ) {
|
|||||||
context.removeAttribute( "id" );
|
context.removeAttribute( "id" );
|
||||||
assert.deepEqual( jQuery.find( "*", context ), q( "nothiddendivchild" ), "no-id element context" );
|
assert.deepEqual( jQuery.find( "*", context ), q( "nothiddendivchild" ), "no-id element context" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.deepEqual( jQuery.find( "* > *", context ), [], "no-id element context (no results)" );
|
assert.deepEqual( jQuery.find( "* > *", context ), [], "no-id element context (no results)" );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":contains not supported in selector-native" );
|
assert.ok( "skip", ":contains not supported in selector-native" );
|
||||||
@ -1591,7 +1605,7 @@ QUnit.test( "context", function( assert ) {
|
|||||||
expected = q( "siblingnext", "siblingspan" );
|
expected = q( "siblingnext", "siblingspan" );
|
||||||
context.appendChild( document.getElementById( "siblingTest" ) );
|
context.appendChild( document.getElementById( "siblingTest" ) );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
jQuery.find( "em:nth-child(2)", context ),
|
jQuery.find( "em:nth-child(2)", context ),
|
||||||
expected.slice( 0, 1 ),
|
expected.slice( 0, 1 ),
|
||||||
@ -1606,7 +1620,7 @@ QUnit.test( "context", function( assert ) {
|
|||||||
assert.ok( "skip", "selection on document fragments not supported in selector-native" );
|
assert.ok( "skip", "selection on document fragments not supported in selector-native" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.deepEqual(
|
assert.deepEqual(
|
||||||
jQuery.find( "em + :not(:has(*)):not(:empty), foo", context.firstChild ),
|
jQuery.find( "em + :not(:has(*)):not(:empty), foo", context.firstChild ),
|
||||||
expected.slice( 0, 1 ),
|
expected.slice( 0, 1 ),
|
||||||
@ -1629,12 +1643,12 @@ QUnit.test( "caching does not introduce bugs", function( assert ) {
|
|||||||
"Reusing selector with new context"
|
"Reusing selector with new context"
|
||||||
);
|
);
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectorsPos ) {
|
||||||
assert.t( "Deep ancestry caching in post-positional element matcher (jQuery #14657)",
|
assert.t( "Deep ancestry caching in post-positional element matcher (jQuery #14657)",
|
||||||
"#qunit-fixture a:lt(3):parent",
|
"#qunit-fixture a:lt(3):parent",
|
||||||
[ "simon1", "google", "groups" ] );
|
[ "simon1", "google", "groups" ] );
|
||||||
} else {
|
} else {
|
||||||
assert.ok( "skip", ":lt not supported in selector-native" );
|
assert.ok( "skip", "Positional selectors are not supported" );
|
||||||
}
|
}
|
||||||
|
|
||||||
sap.className = "original";
|
sap.className = "original";
|
||||||
@ -1653,7 +1667,7 @@ QUnit.test( "disconnected nodes", function( assert ) {
|
|||||||
assert.equal( $div.is( "div" ), true, "Make sure .is('nodeName') works on disconnected nodes." );
|
assert.equal( $div.is( "div" ), true, "Make sure .is('nodeName') works on disconnected nodes." );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "disconnected nodes", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "disconnected nodes", function( assert ) {
|
||||||
assert.expect( 3 );
|
assert.expect( 3 );
|
||||||
|
|
||||||
var $opt = jQuery( "<option></option>" ).attr( "value", "whipit" ).appendTo( "#qunit-fixture" ).detach();
|
var $opt = jQuery( "<option></option>" ).attr( "value", "whipit" ).appendTo( "#qunit-fixture" ).detach();
|
||||||
@ -1666,7 +1680,7 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( "disconnected nodes", function(
|
|||||||
// Support: IE 11+, Edge 12 - 18+
|
// Support: IE 11+, Edge 12 - 18+
|
||||||
// IE/Edge don't support Shadow DOM.
|
// IE/Edge don't support Shadow DOM.
|
||||||
// selector-native doesn't support querying inside of Shadow DOM.
|
// selector-native doesn't support querying inside of Shadow DOM.
|
||||||
QUnit[ jQuery.find.compile && document.body.getRootNode ? "test" : "skip" ](
|
QUnit[ QUnit.jQuerySelectors && document.body.getRootNode ? "test" : "skip" ](
|
||||||
"Shadow DOM nodes supported as root", function( assert ) {
|
"Shadow DOM nodes supported as root", function( assert ) {
|
||||||
assert.expect( 2 );
|
assert.expect( 2 );
|
||||||
|
|
||||||
@ -1810,7 +1824,7 @@ QUnit.test( "jQuery.contains in SVG (jQuery trac-10832)", function( assert ) {
|
|||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit.test( "jQuery.uniqueSort", function( assert ) {
|
QUnit.test( "jQuery.uniqueSort", function( assert ) {
|
||||||
assert.expect( 15 );
|
assert.expect( 14 );
|
||||||
|
|
||||||
function Arrayish( arr ) {
|
function Arrayish( arr ) {
|
||||||
var i = this.length = arr.length;
|
var i = this.length = arr.length;
|
||||||
@ -1886,8 +1900,6 @@ QUnit.test( "jQuery.uniqueSort", function( assert ) {
|
|||||||
assert.deepEqual( jQuery.uniqueSort( test.input ).slice( 0, length ), test.expected, label + " (array)" );
|
assert.deepEqual( jQuery.uniqueSort( test.input ).slice( 0, length ), test.expected, label + " (array)" );
|
||||||
assert.deepEqual( jQuery.uniqueSort( new Arrayish( test.input ) ).slice( 0, length ), test.expected, label + " (quasi-array)" );
|
assert.deepEqual( jQuery.uniqueSort( new Arrayish( test.input ) ).slice( 0, length ), test.expected, label + " (quasi-array)" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
assert.strictEqual( jQuery.unique, jQuery.uniqueSort, "jQuery.unique() is an alias for jQuery.uniqueSort()" );
|
|
||||||
} );
|
} );
|
||||||
|
|
||||||
testIframe(
|
testIframe(
|
||||||
@ -1902,7 +1914,7 @@ testIframe(
|
|||||||
|
|
||||||
testIframe(
|
testIframe(
|
||||||
"jQuery selector cache collides with multiple jQueries on a page",
|
"jQuery selector cache collides with multiple jQueries on a page",
|
||||||
"selector/sizzle_cache.html",
|
"selector/cache.html",
|
||||||
function( assert, jQuery, window, document ) {
|
function( assert, jQuery, window, document ) {
|
||||||
var $cached = window.$cached;
|
var $cached = window.$cached;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ QUnit.test( "find(String) under non-elements", function( assert ) {
|
|||||||
assert.equal( j.find( "div" ).addBack().length, 3, "Check node,textnode,comment to find zero divs, but preserves pushStack" );
|
assert.equal( j.find( "div" ).addBack().length, 3, "Check node,textnode,comment to find zero divs, but preserves pushStack" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "find(leading combinator)", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "find(leading combinator)", function( assert ) {
|
||||||
assert.expect( 4 );
|
assert.expect( 4 );
|
||||||
|
|
||||||
assert.deepEqual( jQuery( "#qunit-fixture" ).find( "> div" ).get(), q( "foo", "nothiddendiv", "moretests", "tabindex-tests", "liveHandlerOrder", "siblingTest", "fx-test-group" ), "find child elements" );
|
assert.deepEqual( jQuery( "#qunit-fixture" ).find( "> div" ).get(), q( "foo", "nothiddendiv", "moretests", "tabindex-tests", "liveHandlerOrder", "siblingTest", "fx-test-group" ), "find child elements" );
|
||||||
@ -104,7 +104,7 @@ QUnit.test( "is(String)", function( assert ) {
|
|||||||
assert.ok( jQuery( input ).is( "input[data-pos=':first']" ),
|
assert.ok( jQuery( input ).is( "input[data-pos=':first']" ),
|
||||||
"attribute-equals POS in string" );
|
"attribute-equals POS in string" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.ok( jQuery( input ).is( ":input[data-pos=':first']" ),
|
assert.ok( jQuery( input ).is( ":input[data-pos=':first']" ),
|
||||||
"attribute-equals POS in string after pseudo" );
|
"attribute-equals POS in string after pseudo" );
|
||||||
} else {
|
} else {
|
||||||
@ -115,7 +115,7 @@ QUnit.test( "is(String)", function( assert ) {
|
|||||||
assert.ok( jQuery( option ).is( "[id=option1a]" ),
|
assert.ok( jQuery( option ).is( "[id=option1a]" ),
|
||||||
"id attribute-equals identifier" );
|
"id attribute-equals identifier" );
|
||||||
|
|
||||||
if ( jQuery.find.compile ) {
|
if ( QUnit.jQuerySelectors ) {
|
||||||
assert.ok( jQuery( option ).is( "[id*=option1][type!=checkbox]" ),
|
assert.ok( jQuery( option ).is( "[id*=option1][type!=checkbox]" ),
|
||||||
"attribute-not-equals identifier" );
|
"attribute-not-equals identifier" );
|
||||||
} else {
|
} else {
|
||||||
@ -185,7 +185,7 @@ QUnit.test( "is(jQuery)", function( assert ) {
|
|||||||
assert.ok( !jQuery( "#simon" ).is( jQuery( ".blogTest" )[ 0 ] ), "Check for multiple classes: Expected classes 'blog' and 'link', but not 'blogTest'" );
|
assert.ok( !jQuery( "#simon" ).is( jQuery( ".blogTest" )[ 0 ] ), "Check for multiple classes: Expected classes 'blog' and 'link', but not 'blogTest'" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "is() with :has() selectors", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "is() with :has() selectors", function( assert ) {
|
||||||
assert.expect( 6 );
|
assert.expect( 6 );
|
||||||
|
|
||||||
assert.ok( jQuery( "#foo" ).is( ":has(p)" ), "Check for child: Expected a child 'p' element" );
|
assert.ok( jQuery( "#foo" ).is( ":has(p)" ), "Check for child: Expected a child 'p' element" );
|
||||||
@ -197,7 +197,7 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( "is() with :has() selectors", fu
|
|||||||
assert.ok( !jQuery( "#foo" ).is( jQuery( "div:has(ul)" ) ), "Check for child: Did not expect 'ul' element" );
|
assert.ok( !jQuery( "#foo" ).is( jQuery( "div:has(ul)" ) ), "Check for child: Did not expect 'ul' element" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "is() with positional selectors", function( assert ) {
|
QUnit[ QUnit.jQuerySelectorsPos ? "test" : "skip" ]( "is() with positional selectors", function( assert ) {
|
||||||
assert.expect( 27 );
|
assert.expect( 27 );
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -334,7 +334,7 @@ QUnit.test( "filter(jQuery)", function( assert ) {
|
|||||||
assert.deepEqual( jQuery( "#form input" ).filter( elements ).get(), q( "text1" ), "filter(Element)" );
|
assert.deepEqual( jQuery( "#form input" ).filter( elements ).get(), q( "text1" ), "filter(Element)" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "filter() with positional selectors", function( assert ) {
|
QUnit[ QUnit.jQuerySelectorsPos ? "test" : "skip" ]( "filter() with positional selectors", function( assert ) {
|
||||||
assert.expect( 19 );
|
assert.expect( 19 );
|
||||||
|
|
||||||
var filterit = function( sel, filter, length ) {
|
var filterit = function( sel, filter, length ) {
|
||||||
@ -415,7 +415,7 @@ QUnit.test( "closest()", function( assert ) {
|
|||||||
assert.deepEqual( jq.contents().closest( "*" ).get(), jq.get(), "Text node input (#13332)" );
|
assert.deepEqual( jq.contents().closest( "*" ).get(), jq.get(), "Text node input (#13332)" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "closest() with positional selectors", function( assert ) {
|
QUnit[ QUnit.jQuerySelectorsPos ? "test" : "skip" ]( "closest() with positional selectors", function( assert ) {
|
||||||
assert.expect( 3 );
|
assert.expect( 3 );
|
||||||
|
|
||||||
assert.deepEqual( jQuery( "#qunit-fixture" ).closest( "div:first" ).get(), [],
|
assert.deepEqual( jQuery( "#qunit-fixture" ).closest( "div:first" ).get(), [],
|
||||||
@ -445,7 +445,7 @@ QUnit.test( "closest(jQuery)", function( assert ) {
|
|||||||
assert.ok( $child.closest( $body.add( $parent ) ).is( "#nothiddendiv" ), "Closest ancestor retrieved." );
|
assert.ok( $child.closest( $body.add( $parent ) ).is( "#nothiddendiv" ), "Closest ancestor retrieved." );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "not(Selector)", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "not(Selector)", function( assert ) {
|
||||||
assert.expect( 7 );
|
assert.expect( 7 );
|
||||||
assert.equal( jQuery( "#qunit-fixture > p#ap > a" ).not( "#google" ).length, 2, "not('selector')" );
|
assert.equal( jQuery( "#qunit-fixture > p#ap > a" ).not( "#google" ).length, 2, "not('selector')" );
|
||||||
|
|
||||||
@ -525,7 +525,7 @@ QUnit.test( "not(jQuery)", function( assert ) {
|
|||||||
);
|
);
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "not(Selector) excludes non-element nodes (gh-2808)", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "not(Selector) excludes non-element nodes (gh-2808)", function( assert ) {
|
||||||
assert.expect( 3 );
|
assert.expect( 3 );
|
||||||
|
|
||||||
var mixedContents = jQuery( "#nonnodes" ).contents(),
|
var mixedContents = jQuery( "#nonnodes" ).contents(),
|
||||||
@ -628,7 +628,7 @@ QUnit.test( "siblings([String])", function( assert ) {
|
|||||||
assert.equal( jQuery( "<a/>" ).siblings().length, 0, "Detached elements have no siblings (#11370)" );
|
assert.equal( jQuery( "<a/>" ).siblings().length, 0, "Detached elements have no siblings (#11370)" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "siblings([String])", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "siblings([String])", function( assert ) {
|
||||||
assert.expect( 2 );
|
assert.expect( 2 );
|
||||||
assert.deepEqual( jQuery( "#sndp" ).siblings( ":has(code)" ).get(), q( "sap" ), "Check for filtered siblings (has code child element)" );
|
assert.deepEqual( jQuery( "#sndp" ).siblings( ":has(code)" ).get(), q( "sap" ), "Check for filtered siblings (has code child element)" );
|
||||||
assert.deepEqual( jQuery( "#sndp" ).siblings( ":has(a)" ).get(), q( "en", "sap" ), "Check for filtered siblings (has anchor child element)" );
|
assert.deepEqual( jQuery( "#sndp" ).siblings( ":has(a)" ).get(), q( "en", "sap" ), "Check for filtered siblings (has anchor child element)" );
|
||||||
@ -640,7 +640,7 @@ QUnit.test( "children([String])", function( assert ) {
|
|||||||
assert.deepEqual( jQuery( "#foo" ).children( "#en, #sap" ).get(), q( "en", "sap" ), "Check for multiple filters" );
|
assert.deepEqual( jQuery( "#foo" ).children( "#en, #sap" ).get(), q( "en", "sap" ), "Check for multiple filters" );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
QUnit[ jQuery.find.compile ? "test" : "skip" ]( "children([String])", function( assert ) {
|
QUnit[ QUnit.jQuerySelectors ? "test" : "skip" ]( "children([String])", function( assert ) {
|
||||||
assert.expect( 1 );
|
assert.expect( 1 );
|
||||||
assert.deepEqual( jQuery( "#foo" ).children( ":has(code)" ).get(), q( "sndp", "sap" ), "Check for filtered children" );
|
assert.deepEqual( jQuery( "#foo" ).children( ":has(code)" ).get(), q( "sndp", "sap" ), "Check for filtered children" );
|
||||||
} );
|
} );
|
||||||
|
Loading…
Reference in New Issue
Block a user