className.indexOf()的问题

时间:2011-05-13 13:03:55

标签: 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('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函数,但不应该触发。

2 个答案:

答案 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'。它不会单独查找active1active1

由于您使用的是jQuery,因此您应该使用它的hasClass方法:

if ($(this).hasClass('active1') || $(this).hasClass('active2')) {
   // ...
}