Jquery className.indexOf()有问题
我对className.indexOf有问题 这是密码Jquery className.indexOf()有问题,jquery,Jquery,我对className.indexOf有问题 这是密码 $('#energie').click(function() { if(this.className.indexOf('active1, active2')!=-1){} else{ if(this.className.indexOf('inactive1')!=-1){ $('#navigation div').removeClass(); $(this).addClass('active
$('#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函数,尽管它不应该被触发。您的条件检查是检查是否将active1作为字符串激活,即使类名在内部不是这样表示的,它们只是用空格分隔 如果您使用的是jQuery,则应使用hasClass函数:
if($(this).hasClass('active1') || $(this).hasClass('active2'))
// Do Stuff
这里使用的indexOf纯粹是一个字符串方法,与CSS类无关。这意味着.className.indexOf'active1,active2'在class属性的内容中查找文本字符串'active1,active2'。它不会分别查找active1和active1
因为您使用的是jQuery,所以应该改用它的hasClass方法:
if ($(this).hasClass('active1') || $(this).hasClass('active2')) {
// ...
}
您应该使用hasClass函数-