Skip to content

Commit 5dab06f

Browse files
committed
Selector: Reduce createDisabledPseudo
SemVer patch
1 parent 5ff208b commit 5dab06f

File tree

4 files changed

+57
-45
lines changed

4 files changed

+57
-45
lines changed

dist/sizzle.js

+28-22
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* Released under the MIT license
77
* http://jquery.org/license
88
*
9-
* Date: 2016-07-29
9+
* Date: 2016-07-30
1010
*/
1111
(function( window ) {
1212

@@ -472,7 +472,7 @@ function createDisabledPseudo( disabled ) {
472472
// Only certain elements can match :enabled or :disabled
473473
// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
474474
// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
475-
return "form" in elem && elem.disabled === false ?
475+
if ( "form" in elem ) {
476476

477477
// Check for inherited disabledness on relevant non-disabled elements:
478478
// * listed form-associated elements in a disabled fieldset
@@ -481,29 +481,35 @@ function createDisabledPseudo( disabled ) {
481481
// * option elements in a disabled optgroup
482482
// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
483483
// All such elements have a "form" property.
484+
if ( elem.parentNode && elem.disabled === false ) {
485+
return "label" in elem ?
486+
487+
// Option elements defer to a parent optgroup if present
488+
( "label" in elem.parentNode ?
489+
elem.parentNode.disabled === disabled :
490+
elem.disabled === disabled ) :
491+
492+
// Support: IE 6 - 11
493+
// Use the isDisabled shortcut property to check for disabled fieldset ancestors
494+
elem.isDisabled === disabled ||
495+
496+
// Where there is no isDisabled, check manually
497+
/* jshint -W018 */
498+
elem.isDisabled !== !disabled &&
499+
disabledAncestor( elem ) === disabled;
500+
}
484501

485-
// Support: IE 6 - 11
486-
// Use the isDisabled shortcut property, which already covers inheritance
487-
elem.isDisabled === disabled ||
488-
489-
// Where there is no isDisabled, check ancestors manually
490-
/* jshint -W018 */
491-
elem.isDisabled !== !disabled && ( "label" in elem ?
492-
493-
// Option elements defer to a parent optgroup if present
494-
( elem.parentNode && "label" in elem.parentNode ?
495-
elem.parentNode.disabled === disabled :
496-
elem.disabled === disabled ) :
502+
return elem.disabled === disabled;
497503

498-
// All others defer to ancestor fieldsets if present
499-
disabledAncestor( elem ) === disabled
500-
) :
504+
// Try to winnow out elements that can't be disabled before trusting the property.
505+
// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
506+
// even exist on them, let alone have a boolean value.
507+
} else if ( "label" in elem ) {
508+
return elem.disabled === disabled;
509+
}
501510

502-
// Try to winnow out elements that can't be disabled before trusting the property.
503-
// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
504-
// even exist on them, let alone have a boolean value.
505-
"form" in elem && elem.disabled === disabled ||
506-
"label" in elem && elem.disabled === disabled;
511+
// Remaining elements are neither :enabled nor :disabled
512+
return false;
507513
};
508514
}
509515

0 commit comments

Comments
 (0)