2013-10-24 48 views
0

第一次問一個問題,但這個網站已經回答了幾百個我。奇數問題動畫2 div

好吧,我正在使用jquery從每個按鈕的動畫2個div。他們工作,但有一個我無法弄清楚的小故障。這兩個div在css中的高度都是0。如果我點擊第一個按鈕,第一個div會打開。然後點擊第二個按鈕,第一個div關閉,第二個打開(根據需要)。但是,如果我再次單擊第二個按鈕並關閉div,則再次單擊第一個按鈕,直到再次單擊,纔會發生任何事情。我希望嘟makes有道理。 任何幫助解決這個毛刺將是偉大的,謝謝

這裏是一個jfiddle它。 http://jsfiddle.net/Jptalon/AMu2Z/1/

<button id="btnOne">One</button> 
<button id="btnTwo">Two</button> 
<div id="one"> 
<p>one text</p> 
</div> 
<div id="two"> 
<p>two text</p> 
</div> 
<script> 
var stateone = true; 
var statetwo = true; 
$(function() { 
$("#btnOne").click(function(){ 
    var x = document.getElementById('two'); 
    if (x.style.height != 0){ $("#two").animate({height:"0px" }, "slow"); statetwo = !statetwo;} 
    if (stateone) { 
    $("#one").animate({height:"100px" }, "slow"); 
    } else { 
    $("#one").animate({height:"0px" }, "slow"); 
    } 
    stateone = !stateone; 
    }); 
}); 
$(function() { 
$("#btnTwo").click(function(){ 
    var y = document.getElementById('one'); 
    if (y.style.height != 0){ $("#one").animate({height:"0px" }, "slow"); stateone = !stateone;} 
    if (statetwo) { 
    $("#two").animate({height:"100px" }, "slow"); 
    } else { 
    $("#two").animate({height:"0px" }, "slow"); 
    } 
    statetwo = !statetwo; 
    }); 
}); 
</script> 

回答

1

可以做出這樣的好...

<button id="btnOne" class="switch" data-target="#one">One</button> 
<button id="btnTwo" class="switch" data-target="#two">Two</button> 
<div id="one" class="toggle"> 
    <p>one text</p> 
</div> 
<div id="two" class="toggle"> 
    <p>two text</p> 
</div> 

然後

.toggle { 
    display: none; 
} 

var $toggles = $('.toggle'); 
$('.switch').click(function(){ 
    var $target = $($(this).data('target')).stop(true, true); 
    $toggles.not($target).stop(true, true).slideUp(); 
    $target.slideToggle('slow'); 
}) 

演示:Fiddle

0

使用jQuery Show()hide()

$("#btnOne").click(function() { 
    $("#two").hide('slow'); 
    $("#one").show('slow'); 

}); 

$("#btnTwo").click(function() { 
    $("#one").hide('slow'); 
    $("#two").show('slow'); 

}); 

DEMO