Jquery toggleClass没有像我预期的那样工作

时间:2013-07-23 06:35:31

标签: jquery css

以下toggleClass不起作用:

    $('.t').click(function() {
        var className = $(this).data('class');
        $(this).toggleClass(className).toggleClass(className+'1');
    });

HTML

 <div class="t a" data-class="a"> 8cghfghfghfghfg</div>
 <div class="t b" data-class="b">20cghfghfghfghfg</div>
 <div class="t c" data-class="c"> 4cghfghfghfghfg</div>

Demo

在这里,我想做的是...... 如果我点击div.t,我想删除特定的类(例如:.a) 并添加相应的类(例如.a1)

修改 如果我点击任何div只有特定的div应该改变而div的其余部分应该处于默认状态 请有人帮忙, 感谢。

4 个答案:

答案 0 :(得分:0)

使用此代码: http://jsfiddle.net/hushme/m9ak9/1/

    $('.t').click(function() {
        var className = $(this).attr('data-class');
  $(this).toggleClass(className).toggleClass(className+'1');
    });

你没有获得attr值。

答案 1 :(得分:0)

尝试

$(this).toggleClass(className + ' ' + className+'1');

演示:Fiddle

或者如果你不想继续翻转

$(this).removeClass(className).addClass(className+'1');

演示:Fiddle

答案 2 :(得分:0)

这是一个快速修复,可以处理您的重置为默认状态:http://jsfiddle.net/mbMhN/

$('.t').click(function () {

    $('.t').each(function () {
        var cls = $(this).data('class');
        $(this).removeClass(cls + "1").addClass(cls);
    });


    var className = $(this).data('class');
    $(this).toggleClass(className).toggleClass(className + '1');
});

答案 3 :(得分:0)

如果您还希望能够“取消切换”活动元素,您可以使用:

http://jsfiddle.net/naresh_k28/m9ak9/

    $('.t').click(function() {
        var currentElement = this;
        var className = $(currentElement).data('class');
        $('.t').each(function(index, element) {
            var jQelement = $(element);
            var className = jQelement.data('class');
            if (element !== currentElement) {
                jQelement.removeClass(className+1).addClass(className);
            }
        });
        $(this).toggleClass(className).toggleClass(className+'1');
    });

注意如果您单击两次相同的元素会发生什么。该元素将返回默认状态。