Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita442110

Browse files
authored
Attributes: Drop thetoggleClass(boolean|undefined) signature
The behavior of this signature is not intuitive, especially if classes aremanipulated via other ways between `toggleClass` calls.Fixesgh-3388Closesgh-4766
1 parent68b4ec5 commita442110

File tree

2 files changed

+15
-62
lines changed

2 files changed

+15
-62
lines changed

‎src/attributes/classes.js

Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
importjQueryfrom"../core.js";
22
importstripAndCollapsefrom"../core/stripAndCollapse.js";
33
importrnothtmlwhitefrom"../var/rnothtmlwhite.js";
4-
importdataPrivfrom"../data/var/dataPriv.js";
54

65
import"../core/init.js";
76

@@ -103,13 +102,6 @@ jQuery.fn.extend( {
103102
},
104103

105104
toggleClass:function(value,stateVal){
106-
vartype=typeofvalue,
107-
isValidValue=type==="string"||Array.isArray(value);
108-
109-
if(typeofstateVal==="boolean"&&isValidValue){
110-
returnstateVal ?this.addClass(value) :this.removeClass(value);
111-
}
112-
113105
if(typeofvalue==="function"){
114106
returnthis.each(function(i){
115107
jQuery(this).toggleClass(
@@ -119,45 +111,25 @@ jQuery.fn.extend( {
119111
});
120112
}
121113

114+
if(typeofstateVal==="boolean"){
115+
returnstateVal ?this.addClass(value) :this.removeClass(value);
116+
}
117+
122118
returnthis.each(function(){
123119
varclassName,i,self,classNames;
124120

125-
if(isValidValue){
126-
127-
// Toggle individual class names
128-
i=0;
129-
self=jQuery(this);
130-
classNames=classesToArray(value);
131-
132-
while((className=classNames[i++])){
133-
134-
// Check each className given, space separated list
135-
if(self.hasClass(className)){
136-
self.removeClass(className);
137-
}else{
138-
self.addClass(className);
139-
}
140-
}
141-
142-
// Toggle whole class name
143-
}elseif(value===undefined||type==="boolean"){
144-
className=getClass(this);
145-
if(className){
121+
// Toggle individual class names
122+
i=0;
123+
self=jQuery(this);
124+
classNames=classesToArray(value);
146125

147-
// Store className if set
148-
dataPriv.set(this,"__className__",className);
149-
}
126+
while((className=classNames[i++])){
150127

151-
// If the element has a class name or if we're passed `false`,
152-
// then remove the whole classname (if there was one, the above saved it).
153-
// Otherwise bring back whatever was previously saved (if anything),
154-
// falling back to the empty string if nothing was stored.
155-
if(this.setAttribute){
156-
this.setAttribute("class",
157-
className||value===false ?
158-
"" :
159-
dataPriv.get(this,"__className__")||""
160-
);
128+
// Check each className given, space separated list
129+
if(self.hasClass(className)){
130+
self.removeClass(className);
131+
}else{
132+
self.addClass(className);
161133
}
162134
}
163135
});

‎test/unit/attributes.js

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1415,7 +1415,7 @@ QUnit.test( "removeClass(undefined) is a no-op", function( assert ) {
14151415
});
14161416

14171417
vartestToggleClass=function(valueObj,assert){
1418-
assert.expect(19);
1418+
assert.expect(11);
14191419

14201420
vare=jQuery("#firstp");
14211421
assert.ok(!e.is(".test"),"Assert class not present");
@@ -1443,25 +1443,6 @@ var testToggleClass = function( valueObj, assert ) {
14431443
assert.ok((e.is(".testA.testC")&&!e.is(".testB")),"Assert 1 class added, 1 class removed, and 1 class kept");
14441444
e.toggleClass(valueObj("testA testC"));
14451445
assert.ok((!e.is(".testA")&&!e.is(".testB")&&!e.is(".testC")),"Assert no class present");
1446-
1447-
// toggleClass storage
1448-
e.toggleClass(true);
1449-
assert.ok(e[0].className==="","Assert class is empty (data was empty)");
1450-
e.addClass("testD testE");
1451-
assert.ok(e.is(".testD.testE"),"Assert class present");
1452-
e.toggleClass();
1453-
assert.ok(!e.is(".testD.testE"),"Assert class not present");
1454-
assert.ok(jQuery._data(e[0],"__className__")==="testD testE","Assert data was stored");
1455-
e.toggleClass();
1456-
assert.ok(e.is(".testD.testE"),"Assert class present (restored from data)");
1457-
e.toggleClass(false);
1458-
assert.ok(!e.is(".testD.testE"),"Assert class not present");
1459-
e.toggleClass(true);
1460-
assert.ok(e.is(".testD.testE"),"Assert class present (restored from data)");
1461-
e.toggleClass();
1462-
e.toggleClass(false);
1463-
e.toggleClass();
1464-
assert.ok(e.is(".testD.testE"),"Assert class present (restored from data)");
14651446
};
14661447

14671448
QUnit.test("toggleClass(String|boolean|undefined[, boolean])",function(assert){

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp