我有一个简单的代码,它添加/删除类:
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()做同样的事吗?如果是这样,为什么那会更有效率呢?谢谢!
答案 0 :(得分:4)
不需要if
部分
因此您的代码需要
$j('#leademails tr.waslogin').removeClass('waslogin');
$j('#leademails tr.islogin').removeClass('islogin').addClass('waslogin');
row.addClass('islogin');
toggleClass
在这种情况下无效,因为您正在操作每行中的不同元素(,我的假设是tr
下有多个#leademails
元素,并且您并非所有人都获得了islogin
或waslogin
类。
答案 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");
},