JavaScript和Jquery中的排他思想

本文介绍了一种在一组相同类型元素中实现单一元素样式变化的排他思想算法,通过JavaScript和Jquery两种方式展示了如何先清除所有元素的样式,再为当前元素设置样式,确保了界面交互的一致性和美观。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果有同一组元素,我们想要某一个元素实现某种样式, 需要用到循环的排他思想算法:

  1. 所有元素全部清除样式(干掉其他人)

  2. 给当前元素设置样式 (留下我自己)

  3. 注意顺序不能颠倒,首先干掉其他人,再设置自己

JavaScript代码如下:

    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <button>按钮5</button>
    <script>
        // 1. 获取所有按钮元素
        var btns = document.querySelectorAll('button');
        // btns得到的是伪数组  里面的每一个元素 btns[i]
        for (var i = 0; i < btns.length; i++) {
            btns[i].onclick = function() {
                // (1) 我们先把所有的按钮背景颜色去掉  干掉所有人
                for (var i = 0; i < btns.length; i++) {
                    btns[i].style.backgroundColor = '';
                }
                // (2) 然后才让当前的元素背景颜色为yellow留下我自己
                this.style.backgroundColor = 'yellow';
                //注意:这里不能将this替换为btns[i]
                //btns[i].style.backgroundColor = 'yellow';
            }
        }
    </script>

Jquery代码如下:

    <button>按钮1</button>
    <button>按钮2</button>
    <button>按钮3</button>
    <button>按钮4</button>
    <button>按钮5</button>
    <script>
        $(function(){
                // 1. 隐式迭代 给所有的按钮都绑定了点击事件
             $("button").click(function() {
                // 2. 当前的元素变化背景颜色
                $(this).css("background", "yellow");
                // 3. 其余的兄弟去掉背景颜色 隐式迭代
                $(this).siblings("button").css("background", "");
            });
        })                 
    </script>

 

### JavaScript实现按钮排他效果 要实现点击某个按钮后仅该按钮具有天蓝色背景的效果,可以采用事件监听器来处理点击操作,并通过遍历其他按钮将其样式重置为默认状态。以下是具体实现方法: #### HTML结构 假设存在六个按钮,HTML代码如下所示: ```html <button class="btn">Button 1</button> <button class="btn">Button 2</button> <button class="btn">Button 3</button> <button class="btn">Button 4</button> <button class="btn">Button 5</button> <button class="btn">Button 6</button> ``` #### CSS定义 为了便于控制样式变化,可以通过CSS类名 `.active` 来设置特定的背景颜色。 ```css .active { background-color: skyblue; } .btn { background-color: white; /* 默认白色 */ border: 1px solid black; padding: 10px; margin: 5px; cursor: pointer; } ``` #### JavaScript逻辑 利用 `querySelectorAll` 获取所有按钮并绑定点击事件,在每次点击时清除之前的状态并将新状态应用到当前按钮上。 ```javascript document.addEventListener("DOMContentLoaded", function () { const buttons = document.querySelectorAll('.btn'); buttons.forEach(button => { button.addEventListener('click', function () { // 移除所有按钮上的 active 类 buttons.forEach(btn => btn.classList.remove('active')); // 给当前点击的按钮添加 active 类 this.classList.add('active'); }); }); }); ``` 上述脚本实现了当任何一个按钮被点击时,其余按钮都会失去高亮显示而仅有目标按钮呈现指定的颜色[^1]。 #### jQuery替代方案 如果偏好使用jQuery库完成相同功能,则可简化选择器与DOM操作过程: ```javascript $(function(){ $('.btn').on('click', function(){ $('.btn').removeClass('active'); // 清楚所有按钮激活状态 $(this).addClass('active'); // 设置当前按钮为激活状态 }); }); ``` 此段代码同样遵循了先清空再设定的原则以确保唯一性[^2]。 ### 注意事项 - 上述例子中的`.active`类是用来改变外观表现;实际项目里可能还需要考虑更多因素比如无障碍访问支持等额外属性调整。 - 如果页面中有大量动态加载的内容或者异步更新的部分,请注意初始化时机以及重新注册事件处理器的情况。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈善强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值