jQuery 属性操作:CSS类

🎉摘要:本文详解 jQuery 操作 CSS 类的三大核心方法:addClass () 追加类、removeClass () 移除类、toggleClass () 切换类。

在 jQuery 中,addClass()、removeClass()、toggleClass() 是操作元素 CSS 类的核心方法,相比原生 JS 直接修改 className 更简洁、更易维护(支持批量操作、动态逻辑、链式调用)。下面将通过示例详细讲解这三个方法。

CSS 类操作的本质是修改 DOM 元素的 classList(原生)或 className属性,jQuery 封装后让操作更直观,且兼容低版本浏览器。

CSS 类方法

addClass (class|fn)

该方法用于为匹配的元素追加一个/多个 CSS 类,不会覆盖已有类,重复添加会自动去重。语法如下表:

用法说明

$(elem).addClass(className)

追加单个 / 多个类(多个类用空格分隔)

$(elem).addClass(function(index, oldClass))

动态生成要添加的类(函数返回类名字符串,index 是元素索引,oldClass 是元素当前的类名)

示例:

<p class="otherClass">这是一个P标签</p>

执行如下 jQuery 代码:

$('p').addClass('myClass')

为匹配的 <p> 元素添加一个名为 myClass 的 CSS 类。

removeClass ([class|fn])

该方法用于从匹配元素中移除指定的 CSS 类。如果不传入参数,会移除所有的 CSS 类。语法如下表:

用法说明

$(elem).removeClass()

移除元素的所有 CSS 类

$(elem).removeClass(className)

移除单个 / 多个类(多个类用空格分隔)

$(elem).removeClass(function(index, oldClass))

动态生成要移除的类(函数返回要移除的类名字符串)

示例:

<p class="otherClass">这是一个P标签</p>

执行如下 jQuery 代码:

$('p').removeClass('myClass');

删除匹配的所有 <p> 元素上名为 myClass 的 CSS 类。

toggleClass (class|fn [,sw])

用于为元素切换指定类(存在则移除,不存在则添加),是“添加/移除”的快捷方式;可选参数 sw 可强制控制添加 / 移除。

语法如下表:

用法说明

$(elem).toggleClass(className)

切换单个 / 多个类(多个类用空格分隔)

$(elem).toggleClass(function(index, oldClass, sw))

动态生成要切换的类(函数返回类名,sw 是当前切换状态)

$(elem).toggleClass(className, switch)

强制控制:switch=true 则添加类,switch=false 则移除类

示例:

<p class="otherClass">这是一个P标签</p>

执行如下 jQuery 代码:

$('p').toggleClass('myClass');

将在所有匹配的 <p> 元素上添加/删除名为 myClass 的 CSS 类。

完整示例

下面示例通过“点击自己动手试一试”可以尝试各种方法的效果:

示例:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JQeury 教程</title>
    <!-- 引入 jQuery 库 -->
    <script type="text/javascript" src="https://www.hxstrive.com/cdn/libs/jquery/3.7.1/jquery.min.js"></script>
    <!-- 引入 loglevel 库,方便在 DOM 中打印日志 -->
    <script src="https://www.hxstrive.com/preview_code/libs/custom_loglevel.js"></script>
    <style>
        button { background: #EEE !important; border: 1px solid #ccc !important; 
            min-width: 40px; padding: 5px; margin: 5px; cursor: pointer; }

        /* 效果样式 */
        .myClass { box-shadow: inset 0 0 3px red; }
    </style>
</head>
<body>

    <div class="app">
        <h3>CSS 类</h3>
        <p class="otherClass">这是一个P标签</p>
    </div>

    <div>
        <!-- addClass(class|fn) 为每个匹配的元素添加指定的类名 -->
        <button type="button" onclick="
                // 添加一个类名 myClass 到所有的 p 元素上
                $('p').addClass('myClass');

                log.info('p 的 class:' + $('p').attr('class'));
            ">$('p').addClass('myClass')</button>

        <!-- removeClass([class|fn]) 从所有匹配的元素中删除全部或者指定的类 -->
        <button type="button" onclick="
                // 删除所有 p 元素上的 myClass 类
                $('p').removeClass('myClass');

                log.info('p 的 class:' + $('p').attr('class'));
            ">$('p').removeClass('myClass')</button>

        <!-- toggleClass(class|fn[,sw]) 如果存在(不存在)就删除(添加)一个类 -->
        <button type="button" onclick="
                // 切换 p 元素上的 myClass 类
                $('p').toggleClass('myClass');

                log.info('p 的 class:' + $('p').attr('class'));
            ">$('p').toggleClass('myClass')</button>
        
        <button type="button" onclick="
                // 切换 p 元素上的 myClass 类
                $('p').toggleClass(function(index, currentClass){
                    log.info('当前元素类名:', currentClass);
                    return $('.app').length > 0 ? 'myClass' : '';
                });
            ">$('p').toggleClass(function(){...})</button>
    </div>
    
</body>
</html>

看看效果👉自己动手试一试 »

更多关于 jQuery 的知识请阅读后续教程。

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号