2011-04-28 72 views
2

目前,單擊h2標籤可以用slideToggle切換div。但是,我試圖淡入和出h2標籤中的.hint_text_heading。所以,最初,我至少試過要做什麼,我將一個.active類添加到打開的h2標記中,然後在.hint_text_heading中淡出。但是,當我關閉div時,我無法使.hint_text_heading淡出。jQuery切換幫助

有什麼建議嗎?謝謝!

HTML

<h2 class="collapsible_head">This is a title.<span class="hint_text_heading">This is a hint.</span></h2> 
<div> 
    This is the toggled content. 
</div> 

jQuery的

$(document).ready(function(){ 
    $('span.hint_text_heading').hide(); 
    $('h2.collapsible_head').click(function() { 
     $(this).next().slideToggle('slow'); 
     $(this).toggleClass('active'); 
     $('h2.active span.hint_text_heading').fadeIn(); 
    }).next().hide(); 
}); 

UPDATE/

下面是的jsfiddle一個例子。正如你所看到的,div切換和提示文本淡入,但是,當div被隱藏時,提示文本仍然存在。我試圖讓淡出:

http://jsfiddle.net/UGHgx/

+0

你是什麼意思,「當你關閉div」? – mattsven 2011-04-28 12:34:41

+0

更新的問題。 – stewart715 2011-04-28 12:36:31

+0

但關閉div的事件是什麼?第二次點擊? – Andre 2011-04-28 12:36:54

回答

5

我認爲這是你想要什麼:

CSS:

span.hint_text_heading { display: none; } 

的jQuery:

$('h2.collapsible_head').click(function() { 
    $(this).next().slideToggle('slow'); 
    //$(this).toggleClass('active'); 
    $('span.hint_text_heading', this).fadeToggle(); 
}).next().hide(); 
+0

更好。謝謝。 – stewart715 2011-04-28 12:43:03

+0

感謝隊友,你的代碼也可以幫助我獲得關於'fadeToggle()'的一些知識。 – thecodeparadox 2011-04-28 12:48:02

+0

沒問題。樂意效勞。 – mattsven 2011-04-28 12:56:15

4

如何:

$(function(){ /* shorthand for $(document).ready(function(){ */ 

    $('span.hint_text_heading').hide(); 
    $('h2.collapsible_head').click(function() { 

     $(this).next().slideToggle('slow'); 
     $(this).toggleClass('active'); 
     $('h2.active span.hint_text_heading').fadeIn(); 
     $('h2:not(.active) span.hint_text_heading').fadeOut(); 

    }).next().hide(); 

}); 

編輯:
我也建議刪除$('span.hint_text_heading').hide();,只是把display:none;作爲一種風格,這是額外的JavaScript不需要的地方。

+0

當有jQuery時,總會有一種方法。謝謝。 – stewart715 2011-04-28 12:39:20

+0

NeXXeuS說的是一個較短的工作版本:) – Kokos 2011-04-28 12:41:23

1

你想要這個;

$(document).ready(function(){ 
    $('span.hint_text_heading').hide(); 
    $('h2.collapsible_head').click(function() { 
     $(this).children('.hint_text_heading').fadeOut().end().next().slideToggle('slow'); 
     $(this).toggleClass('active'); 
     $('h2.active span.hint_text_heading').fadeIn(); 
    }).next().hide(); 
}); 

如果不是,請評論我,我會盡力給你解決方案。

+0

是的,這也適用,但NeXXeus的答案更鞏固了:)謝謝。 – stewart715 2011-04-28 12:44:43

+0

@masedesign嗨,朋友,謝謝你的評論。 – thecodeparadox 2011-04-28 12:46:15

0

那麼,快速和骯髒的解決方案:

http://jsfiddle.net/CpVSC/12/

$('span.hint_text_heading').hide(); 
$('h2.collapsible_head').click(function() { 

    $(this).next().slideToggle('slow'); 
    if($(this).hasClass('active')){ 
      $('.hint_text_heading').fadeOut(); 
     }else{ 
    $('span.hint_text_heading',this).fadeIn(); 
} 
    $(this).toggleClass('active'); 
}).next().hide(); 
0

工作代碼(測試):

$(document).ready(function() { 
    $('h2.collapsible_head').click(function() { 
     $('h2.active span.hint_text_heading').hide(); 
     $(this).next().slideToggle('slow'); 
     $(this).toggleClass('active'); 
     $('h2.active span.hint_text_heading').fadeIn(); 
    }).children().hide().end().next().hide(); 
}); 

這裏的小提琴: http://jsfiddle.net/UGHgx/3/