2013-01-23 114 views
0

我有多個按鈕切換相同的div(實際上是我的頁面上的iframe)。當我點擊不同的按鈕時,我希望他們'retoggle',但是當我再次點擊同一個按鈕時,我只想關閉div。jquery關閉切換

JSFIDDLE

$(document).ready(function(){ 
    $('.leftbutton').click(function(){ 
     if($('#left').is(':visible')) return ; // ignoring 
     $('#right').hide(); 
     $('#left').fadeIn(); 
    }); 
}); 

$(document).ready(function(){ 
    $('.rightbutton').click(function(){ 
     if($('#right').is(':visible')){ 
      $('#right').fadeOut(); 
      $('#right').fadeIn(); 
     } 
     else{ 
      $('#left').hide(); 
      $('#right').fadeIn(); 
     } 
    }); 
}); 

回答

1

你可以做的是保存過去的按鈕被點擊的目標元素的一部分。例如:

$(".rightbutton").on('click', function() { 
    $("#right").data('lastClicked', this); 

然後,比較,最後點擊與this數據看按鈕是否應該顯示與否。

http://jsfiddle.net/CfGYG/10/

+0

你太棒了!我正在搞清楚remove和addclass,但是這樣好多了!謝謝 – ThomasCS

1

要關閉後再次點擊左邊的,你可以簡單地把它隱藏,而不是在你的函數返回。此相同的概念可以應用於右按鈕:

$('.leftbutton').click(function(){ 
    if($('#left').is(':visible')) 
    { 
     $("#left").hide("slide");; 
     return; 
    } 
    $('#right').hide(); 
    $('#left').fadeIn(); 
}); 

http://jsfiddle.net/CfGYG/11/

0

這兩個答案都是有用的,並結合它給了我所有我想要的功能。

看看這個的jsfiddle:http://jsfiddle.net/thomascs/nV5Tu/

$(document).ready(function(){ 
    $('.leftbutton').click(function(){ 
     if($('#left').is(':visible')) { 
      $('#left').hide(); 
     } 
     else { 
     $('#right').hide(); 
     $('#left').fadeIn(); 
     } 
    }); 
}); 

$(document).ready(function(){ 
    $('.rightbutton').click(function() { 
     if ($('#right').is(':visible')) { 
       $('#right').fadeOut(); 
      if ($("#right").data('lastClicked') !== this) { 
       $('#right').fadeIn(); 
      } 
     } 
     else { 
      $('#left').hide(); 
      $('#right').fadeIn(); 
     } 
     $("#right").data('lastClicked', this); 
    }); 
}); 

感謝您的幫助!