试图理解toggleClass()

时间:2011-03-09 14:57:19

标签: jquery

我有一个简单的代码,它添加/删除类:

 clearAndSetLogin: function (row) {

    if ($j('#leademails tr').is('.waslogin'))
        $j('#leademails tr.waslogin').removeClass('waslogin');

    $j('#leademails tr.islogin').removeClass('islogin').addClass('waslogin');     
    row.addClass('islogin');   
 },

我可以用toggleClass()做同样的事吗?如果是这样,为什么那会更有效率呢?谢谢!

3 个答案:

答案 0 :(得分:4)

不需要if部分

因此您的代码需要

$j('#leademails tr.waslogin').removeClass('waslogin');
$j('#leademails tr.islogin').removeClass('islogin').addClass('waslogin');
row.addClass('islogin');

toggleClass在这种情况下无效,因为您正在操作每行中的不同元素(,我的假设是tr下有多个#leademails元素,并且您并非所有人都获得了isloginwaslogin

答案 1 :(得分:2)

不,toggleClass不会完全做同样的事情(至少在没有大部分现有代码的情况下也是如此)。

如果我们采用以下代码(不能做你想做的事):

clearAndSetLogin: function (row) {
    $j('#leademails tr').toggleClass(".waslogin");
    $j('#leademails tr').toggleClass(".islogin");
},

并逐行处理,clearAndSetLogin的调用将添加 waslogin(如果不存在),如果存在则将其删除并对islogin执行相同操作。你的代码中只有当登录时才会添加waslogin。

如果需要,可以使用toggleClass执行.islogin部分。

答案 2 :(得分:-1)

查看jQ的API,http://api.jquery.com/toggleClass/

但是,这应该是你想要的:

clearAndSetLogin: function (row) {
    $j('#leademails tr').toggleClass(".waslogin");
    $j('#leademails tr').toggleClass(".islogin");
},