为什么要将现有的 jQuery class "removeClass" 传递给 IIFE?
Why do you pass existing jQuery class "removeClass" into IIFE?
我刚开始学习JQuery,我从 Codepen 看到的这部分编码让我很困惑
jQuery.fn.removeClass = function( value ) {
if ( value && typeof value.test === "function" ) {
for ( var i = 0, l = this.length; i < l; i++ ) {
var elem = this[i];
if ( elem.nodeType === 1 && elem.className ) {
var classNames = elem.className.split( /\s+/ );
for ( var n = classNames.length; n--; ) {
if ( value.test(classNames[n]) ) {
classNames.splice(n, 1);
}
}
elem.className = jQuery.trim( classNames.join(" ") );
}
}
} else {
removeClass.call(this, value);
}
return this;
}
})(jQuery.fn.removeClass);
为什么要传递 "jQuery.fn.removeClass",它在 jQuery 中存在 class?
此函数扩展了默认的 jQuery.removeClass()
方法,因此它接受 RegExp 作为输入:
// case insensitive
$('span').removeClass(/removeme/i);
[class*="me"i] {
color: red;
}
span {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="removeme">should be black</span>
<span class="RemoveMe Too">should be black</span>
<span class="removeMeAlso">should be black</span>
<span class="notMe">should be red</span>
<script>
(function(removeClass) {
jQuery.fn.removeClass = function(value) {
if (value && typeof value.test === "function") {
for (var i = 0, l = this.length; i < l; i++) {
var elem = this[i];
if (elem.nodeType === 1 && elem.className) {
var classNames = elem.className.split(/\s+/);
for (var n = classNames.length; n--;) {
if (value.test(classNames[n])) {
classNames.splice(n, 1);
}
}
elem.className = jQuery.trim(classNames.join(" "));
}
}
} else {
removeClass.call(this, value);
}
return this;
}
})(jQuery.fn.removeClass);
</script>
我刚开始学习JQuery,我从 Codepen 看到的这部分编码让我很困惑
jQuery.fn.removeClass = function( value ) {
if ( value && typeof value.test === "function" ) {
for ( var i = 0, l = this.length; i < l; i++ ) {
var elem = this[i];
if ( elem.nodeType === 1 && elem.className ) {
var classNames = elem.className.split( /\s+/ );
for ( var n = classNames.length; n--; ) {
if ( value.test(classNames[n]) ) {
classNames.splice(n, 1);
}
}
elem.className = jQuery.trim( classNames.join(" ") );
}
}
} else {
removeClass.call(this, value);
}
return this;
}
})(jQuery.fn.removeClass);
为什么要传递 "jQuery.fn.removeClass",它在 jQuery 中存在 class?
此函数扩展了默认的 jQuery.removeClass()
方法,因此它接受 RegExp 作为输入:
// case insensitive
$('span').removeClass(/removeme/i);
[class*="me"i] {
color: red;
}
span {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="removeme">should be black</span>
<span class="RemoveMe Too">should be black</span>
<span class="removeMeAlso">should be black</span>
<span class="notMe">should be red</span>
<script>
(function(removeClass) {
jQuery.fn.removeClass = function(value) {
if (value && typeof value.test === "function") {
for (var i = 0, l = this.length; i < l; i++) {
var elem = this[i];
if (elem.nodeType === 1 && elem.className) {
var classNames = elem.className.split(/\s+/);
for (var n = classNames.length; n--;) {
if (value.test(classNames[n])) {
classNames.splice(n, 1);
}
}
elem.className = jQuery.trim(classNames.join(" "));
}
}
} else {
removeClass.call(this, value);
}
return this;
}
})(jQuery.fn.removeClass);
</script>