2013-06-23 42 views
3
$(document).ready(function(){ 
$('#AddCity').hide(); 
$('#AddCityA').click(function(){ 
    if (AddCityVar==1){ 
     $('#AddCity').hide(); 
     var AddCityVar=0; 
    }else{ 
      $('#AddCity').slideDown("slow"); 
      var AddCityVar=1; 
    } 
    }); 

我不能算出這個,爲什麼DIV ID爲#AddCity是首先點擊打開上#AddCityA鏈接,但永遠不會隱藏第二次點擊?是否$(「#AddCityA」)。點擊(函數()只工作一次?jQuery的hide()和了slideDown()

<a href="#" id="AddCityA">Add City</a> 

<div id="AddCity"> 
    here some code 
</div> 

感謝所有幫助

回答

3

你似乎重新initialisng AddCityVar每次你一些值分配給它。你需要有它的點擊功能範圍之外。

$(document).ready(function(){ 
    $('#AddCity').hide(); 
    var AddCityVar= 0; 
    $('#AddCityA').click(function(){ 
     if (AddCityVar==1) { 
     $('#AddCity').hide(); 
     AddCityVar=0; 
     } 
     else { 
     $('#AddCity').slideDown("slow"); 
     AddCityVar=1; 
     } 
    }); 
}); 

但是,作爲烤提到的,neednt具有可變做到這一點,您可以只使用slideToggle

$('#AddCityA').click(function() { 
    $('#AddCity').slideToggle("slow"); 
}); 

演示:http://jsfiddle.net/hungerpain/9cdKL/

+0

+1,但AddCityVar不需要在全局scop中e,順便說一句,這不是 –

+1

@passionateCoder非常感謝你!是的,這一個工作 – Shirker

+0

@roasted改變了它.. – krishgopinath

2

你可以只檢查元素可見:

$(document).ready(function() { 
    $('#AddCity').hide(); 
    $('#AddCityA').click(function() { 
     var state = $('#AddCity').is(':visible'); 
     $('#AddCity')[state?'hide':'slideDown'](state ? 0 : 'slow'); 
    }); 
}); 

FIDDLE

對於一個更簡單的方法,你可以在元素兩種方式滑動:

$('#AddCity').hide(); 
    $('#AddCityA').on('click', function() { 
     $('#AddCity').slideToggle('slow'); 
    }); 
+0

我希望我可以對此進行投票。這一個也運作良好。謝謝你 – Shirker