aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2024-01-12 01:18:03 +0100
committerGitHub <noreply@github.com>2024-01-12 01:18:03 +0100
commite06ff08849057cd099365bf43598c8952fe9956d (patch)
treed9c545a188d34df174557ad23d1067c91e848fe8
parent56139394705022e4f6756440030ad6f3bf35f5a6 (diff)
downloadjquery-e06ff08849057cd099365bf43598c8952fe9956d.tar.gz
jquery-e06ff08849057cd099365bf43598c8952fe9956d.zip
Selector: Make `selector.js` module depend on `attributes/attr.js`
This fixes custom builds using the `--include` switch that don't include the `attributes` module. Fixes gh-5379 Closes gh-5384 Co-authored-by: Richard Gibson <richard.gibson@gmail.com>
-rw-r--r--src/attributes/attr.js10
-rw-r--r--src/selector-native.js2
-rw-r--r--src/selector.js3
-rw-r--r--src/selector/var/booleans.js2
4 files changed, 10 insertions, 7 deletions
diff --git a/src/attributes/attr.js b/src/attributes/attr.js
index ddddcada6..5a911c7d0 100644
--- a/src/attributes/attr.js
+++ b/src/attributes/attr.js
@@ -97,7 +97,15 @@ if ( isIE ) {
};
}
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
+// HTML boolean attributes have special behavior:
+// we consider the lowercase name to be the only valid value, so
+// getting (if the attribute is present) normalizes to that, as does
+// setting to any non-`false` value (and setting to `false` removes the attribute).
+// See https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes
+jQuery.each( (
+ "checked selected async autofocus autoplay controls defer disabled " +
+ "hidden ismap loop multiple open readonly required scoped"
+).split( " " ), function( _i, name ) {
jQuery.attrHooks[ name ] = {
get: function( elem ) {
var ret,
diff --git a/src/selector-native.js b/src/selector-native.js
index afb60f227..b245e3350 100644
--- a/src/selector-native.js
+++ b/src/selector-native.js
@@ -25,7 +25,6 @@ import { jQuery } from "./core.js";
import { document } from "./var/document.js";
import { whitespace } from "./var/whitespace.js";
import { isIE } from "./var/isIE.js";
-import { booleans } from "./selector/var/booleans.js";
import { rleadingCombinator } from "./selector/var/rleadingCombinator.js";
import { rdescend } from "./selector/var/rdescend.js";
import { rsibling } from "./selector/var/rsibling.js";
@@ -41,7 +40,6 @@ import "./selector/escapeSelector.js";
import "./selector/uniqueSort.js";
var matchExpr = jQuery.extend( {
- bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
needsContext: new RegExp( "^" + whitespace + "*[>+~]" )
}, filterMatchExpr );
diff --git a/src/selector.js b/src/selector.js
index d71e65ad4..da535718e 100644
--- a/src/selector.js
+++ b/src/selector.js
@@ -9,7 +9,6 @@ import { rbuggyQSA } from "./selector/rbuggyQSA.js";
import { rtrimCSS } from "./var/rtrimCSS.js";
import { isIE } from "./var/isIE.js";
import { identifier } from "./selector/var/identifier.js";
-import { booleans } from "./selector/var/booleans.js";
import { rleadingCombinator } from "./selector/var/rleadingCombinator.js";
import { rdescend } from "./selector/var/rdescend.js";
import { rsibling } from "./selector/var/rsibling.js";
@@ -24,6 +23,7 @@ import { tokenize } from "./selector/tokenize.js";
import { toSelector } from "./selector/toSelector.js";
// The following utils are attached directly to the jQuery object.
+import "./attributes/attr.js"; // jQuery.attr
import "./selector/escapeSelector.js";
import "./selector/uniqueSort.js";
@@ -50,7 +50,6 @@ var i,
ridentifier = new RegExp( "^" + identifier + "$" ),
matchExpr = jQuery.extend( {
- bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
// For use in libraries implementing .is()
// We use this for POS matching in `select`
diff --git a/src/selector/var/booleans.js b/src/selector/var/booleans.js
deleted file mode 100644
index bbdc4fdfc..000000000
--- a/src/selector/var/booleans.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export var booleans = "checked|selected|async|autofocus|autoplay|controls|" +
- "defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped";