2011-02-24 96 views
0

我遇到了jQuery函数'hasClass'的问题。它返回false,而它应该返回true。 hasClass函数正在寻找由javascript添加的类。所以也许hasClass函数无法找到改变的HTML中的类?如果是这样,我该如何解决这个问题呢?jQuery hasClass检查修改后的DOM

$(".slides").mouseover(function(){ 
    $(this).stop(true, true).animate({"width": "+=30px", "height": "+=30px", "margin-top": "+=15px"}, 200); 
}) 

$(".slides").mouseout(function(){ 
    alert($(this).hasClass('activeSlide')); 
    if(!$(this).hasClass('activeSlide')){ 
     $(this).stop(true, true).animate({"width": "-=30px", "height": "-=30px", "margin-top": "-=15px"}, 200); 
    } 
}); 

$("body").click(function(){ 
    $(".activeSlide").removeClass("activeSlide"); 
}); 

$(".slides").click(function(){ 
    $(".activeSlide").removeClass("activeSlide"); 
    $(this).addClass("activeSlide"); 
    alert("Set"); 
}); 
+1

如果你要在同一范围内多次使用相同的选择,你真的应该缓存JQ选择到一个变量,并使用它。 'var foo = jQuery(this);' – epascarello 2011-02-24 20:23:47

回答

5

由于事件传播,您的身体单击处理程序始终删除activeSlide类。

尝试event.stopPropagation();

$(".slides").click(function(event){ 
    $(".activeSlide").removeClass("activeSlide"); 
    $(this).addClass("activeSlide"); 
    event.stopPropagation(); 
    alert("Set"); 
}); 

$(".slides").click(function(){ 
    $(".activeSlide").removeClass("activeSlide"); 
    $(this).addClass("activeSlide"); 
    alert("Set"); 
    return false; 
}); 
+0

非常感谢! – Boyd 2011-02-24 19:26:32