我有一个简单的页面可以切换部门的可见性,并带有一个漂亮的图标来显示它是否可见。 我正在使用font-awesomes图标" fa-eye"和" fa-eye-slash"
问题是当使用addClass时,jquery会忽略第二个" - "制备
$(this).addClass("fa-eye-slash")
添加课程" fa-eye"。
它非常奇怪,我从来没有遇到过像jquery这样的东西。请有人协助我解决/解决这个问题。
继承人http://jsfiddle.net/m5cdpnhk/
由于
答案 0 :(得分:1)
添加其他选项(如果没有其他情况,则问题是两个)
$(".box-body ul li i").click(function () {
var elm = $(this);
if ($(elm).hasClass("fa-eye")) {
$(elm).removeClass("fa-eye");
$(elm).css("color", "red");
$(elm).addClass('fa-eye-slash');
}else{
//if ($(elm).hasClass("fa-eye-slash")) {
$(elm).removeClass("fa-eye-slash");
$(elm).addClass("fa-eye");
$(elm).css("color", "green");
//}
}
});
或切换班级
.red:before{
color:red
}
.green:before{
color:green;
}
$(".box-body ul li i").click(function () {
var elm = $(this);
$(elm).toggleClass("fa-eye").toggleClass("red");
$(elm).toggleClass("fa-eye-slash").togglesClass("green");
});
答案 1 :(得分:1)
您有两个if
条件一个接一个地运行。
如果第一个if
运行,那么它所做的一件事就是$(elm).addClass('fa-eye-slash');
。
第二个if
条件为if ($(elm).hasClass("fa-eye-slash"))
,因此如果第一个if
运行,那么第二个始终运行。
您需要else
声明。
$(elm).addClass('fa-eye-slash');
} else if ($(elm).hasClass("fa-eye-slash")) {
$(elm).removeClass("fa-eye-slash");
答案 2 :(得分:0)
我不知道为什么你的代码不能正常工作,但试试这个:
$(".box-body ul li i").click(function () {
var elm = $(this);
if ($(elm).hasClass("fa-eye")) {
$(elm).removeClass("fa-eye");
$(elm).css("color", "red");
$(elm).addClass('fa-eye-slash');
}else{
$(elm).removeClass("fa-eye-slash");
$(elm).addClass("fa-eye");
$(elm).css("color", "green");
}
});
答案 3 :(得分:0)
你做错了。你必须在第二个条件下放置“else if”。
if ($(elm).hasClass("fa-eye")) {
$(elm).removeClass("fa-eye");
$(elm).css("color", "red");
$(elm).addClass('fa-eye-slash');
}
else if ($(elm).hasClass("fa-eye-slash")) {
$(elm).removeClass("fa-eye-slash");
$(elm).addClass("fa-eye");
$(elm).css("color", "green");
}