在类之间交替添加了jQuery

时间:2010-12-17 21:17:36

标签: jquery class toggle addclass

我有一个3 div,jQuery脚本在单击div时添加一个类:

.red{ background-color: red; }

我想要做的是修改jQuery,以便下次添加。red类时添加.blue.red,{{1等等...

我的脚本你可以the in this demo

.blue

对不起,我没有多分享,但我的可怕尝试只会让人感到困惑。

我希望我已经说清楚了,如果不是,请问!!

提前致谢!!

更新

我认为问题不够明确,所以我会尝试进一步解释。

基本上需要三个div,第一次点击,将点击的div转换为红色,第二次将点击转换为蓝色,红色等于在,他们应该切换(点击第一次点击时转为红色或蓝色是唯一重要的一个)

1 个答案:

答案 0 :(得分:7)

编辑:根据以下评论,您可能希望为每个点击的后续项目替换颜色,并且无法尊重它。

这应该这样做:

示例: http://jsfiddle.net/patrick_dw/zUdWq/

$('a').click((function() {
    var i = 0;
    var colors = ['blue','red'];
    return function() {
        $(this).addClass( colors[i = ++i % 2] ).unbind('click');
    };
})());

这使用闭包来包装变量。如果你不想/不需要,那么没有闭包就是一样的。

示例: http://jsfiddle.net/patrick_dw/zUdWq/1/

var i = 0;
var colors = ['blue','red'];

$('a').click(function() {
    $(this).addClass( colors[i = ++i % 2] ).unbind('click');
});

原始回答:

$a.addClass('red').click(function(){
    $(this).toggleClass('red blue');
});

首先在页面加载时添加red类,然后在每次点击时切换redblue

如果您想在项目上没有任何课程的情况下开始,那么您可以这样做:

$a.click(function(){
    if( !this.className ) {
        this.className = 'red';
    } else {
        $(this).toggleClass('red blue');
    }
});