我遇到className.indexOf()
的问题这是代码
$('#energie').click(function() {
if(this.className.indexOf('active1, active2')!=-1){}
else{
if(this.className.indexOf('inactive1')!=-1){
$('#navigation div').removeClass();
$(this).addClass('active1');
$(this).siblings().addClass('inactive2');
}
else {
$('#navigation div').removeClass();
$(this).addClass('active2');
$(this).siblings().addClass('inactive1');
}
$("#maincontent > div:visible").fadeOut(300, function(){
$("div.energiewende").fadeIn(450);
]);
}
)};
问题是,如果.this的className为active1或active2,则会触发else函数,但不应该触发。
答案 0 :(得分:7)
您的条件检查是检查您是否将“active1,active”作为字符串,即使这不是内部如何表示类名(它们只是用空格分隔)。
如果您正在使用jQuery,则应使用hasClass
函数:
if($(this).hasClass('active1') || $(this).hasClass('active2'))
// Do Stuff
答案 1 :(得分:0)
indexOf
纯粹是一种字符串方法,与CSS类没有关系。这意味着this.className.indexOf('active1, active2')
会在class属性的内容中查找文字字符串'active1, active2'
。它不会单独查找active1
和active1
。
由于您使用的是jQuery,因此您应该使用它的hasClass
方法:
if ($(this).hasClass('active1') || $(this).hasClass('active2')) {
// ...
}