首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改类后,jquery继续选择元素。

更改类后,jquery继续选择元素。
EN

Stack Overflow用户
提问于 2014-08-04 11:25:35
回答 2查看 46关注 0票数 0

我有一个按钮,它必须改变它在满足某些条件后所做的事情。

所以我按它的类来选择按钮,我想在满足条件的时候删除这个类,并向元素中添加一个新的类,并对它做一些其他的事情。但这不管用。

我只是为我的问题做了一个例子。

这是代码:

代码语言:javascript
复制
$('.button-1').click(function(){
    $('.box').width(function(){
        return $(this).width() + 10;
    });
    $(this).removeClass('button-1').addClass('button-2');
});
$('.button-2').click(function(){
    $('.box').width(function(){
        return $(this).width() - 10;
    });
    $(this).removeClass('button-2').addClass('button-1');
});

小提琴

我预计这将在增加和减少黑匣子宽度之间切换,但它继续增加。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-04 11:27:41

这是因为事件是静态地绑定在按钮上的,所以可以这样使用事件委托:

代码语言:javascript
复制
$(document).on('click','.button-1', function(){
    $('.box').width(function(){
        return $(this).width() + 10;
    });
    $(this).removeClass('button-1').addClass('button-2');
});
$(document).on('click','.button-2', function(){
    $('.box').width(function(){
        return $(this).width() - 10;
    });
    $(this).removeClass('button-2').addClass('button-1');
});

演示

票数 4
EN

Stack Overflow用户

发布于 2014-08-04 12:06:20

当然,您可以像that...but那样这样做,难道添加另一个变量来检查是否有单击是否更容易吗?代码要简单得多,稍后您可以检查框是否已被放大。

这种方法还将计算风格与计算方法分离开来,这通常被认为是一个好主意。

代码语言:javascript
复制
var large = false;
$('body').on('click', '.button', function(){

if (large) {
    $('.box').addClass('clicked');
    large = false;
} else {
    $('.box').removeClass('clicked');
    large = true;
}

});

此外,您还需要如下所示的css类:

代码语言:javascript
复制
.clicked {
    width: 110px; 
}

我删除了按钮-1和按钮-2类,给div类“按钮”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25117566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档