2011-08-28 7 views
0

私は最初から隠されている3つのelemetsを持っています、また、slideToggleでそれらを示す3つのリンクがあります。私はコードをよりシンプルにし、よりスマートにするための解決策を探しています。私はまた、この問題を抱えています。要素が見えて、別のリンクをクリックすると、新しいリンクを切り替える前に表示リンクを元に戻したいと思います。私のコードは今では同じリンクをクリックするだけで元の状態に戻りますが、選択されたリンクを示す太字のフォントを追加したクラスはまだ太字になります。うーん、これはもっと良いやり方でできますか? Precaiteいくつかの助け!ありがとう!SlideToggle戻るとremoveClass?

$(document).ready(function(){ 

$("#info").click(function() { 
$("#aktuellt").removeClass("startsida_extra_selected"); 
$("#kontakt").removeClass("startsida_extra_selected"); 
$("#info").addClass("startsida_extra_selected"); 
$("#startbild_info").slideToggle("fast"); 
}); 

$("#aktuellt").click(function() { 
$("#info").removeClass("startsida_extra_selected"); 
$("#kontakt").removeClass("startsida_extra_selected"); 
$("#aktuellt").addClass("startsida_extra_selected"); 
$("#startbild_aktuellt").slideToggle("fast"); 
}); 

$("#kontakt").click(function() { 
$("#info").removeClass("startsida_extra_selected"); 
$("#aktuellt").removeClass("startsida_extra_selected"); 
$("#kontakt").addClass("startsida_extra_selected"); 
$("#startbild_kontakt").slideToggle("fast"); 
}); 

});

jQueryのためのHTMLコード:

<div id="startbild_info"> 
<p>info</p> 
</div> 

<div id="startbild_aktuellt"> 
<p>aktuellt</p> 
</div> 

<div id="startbild_kontakt"> 
<p>kontakt</p> 
</div> 

答えて

1
$(document).ready(function(){ 

    var elements = $("#info, #aktuellt, #kontakt"); 

    elements.click(function(event) { 
    event.preventDefault(); 

    var element = $(this);  
    var element_id = element.attr("id"); 
    var bild_element = $("#startbild_"+element_id); 

    elements.removeClass("startsida_extra_selected");   

    bild_element.slideToggle("fast", function(){ 
     // After the toggle is finished, check if bild_element has opened or closed 
     // If bild_element has opened the class is added to element. 
     if(bild_element.is(":visible") === true) 
     {    
      element.addClass("startsida_extra_selected"); 
     } 
    }); 
    }); 
}); 
+0

ナイス!私はコードを少し修正しようとしているので、誰かがリンクをクリックして戻ってきたときにはstartsida_extra_selectedというクラスはありません。クラスがstartsida_extra_selectedの場合は、要素が表示されているときにのみ使用します。 –

+0

あなたのコメントに基づいていくつかの変更を追加しました。 – Struikel

+0

ほぼ完璧!新しい要素が選択されて可視に切り替わる前に可視要素を元に戻すことは可能でしょうか?それ以外の場合は、要素が表示されていてもリンクがstartsida_extra_selectedクラスで強調表示されていないと、少し奇妙に見えますか? –