2011-02-24 17 views
0

jQuery関数 'hasClass'に問題があります。 trueを返す必要がある間はfalseを返します。 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

答えて

5

イベントの伝播のため、ボディクリックハンドラは常にactiveSlideクラスを削除します。

try 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