2013-04-20 63 views
0

我在按下.sidebar-toggle時顯示側邊欄,並在#page被按下時隱藏邊欄。jQuery變量在功能之外沒有改變

顯示側邊欄完美,但當#page被按下時它不會隱藏。當單擊.sidebar切換時,它看起來像變量未設置爲1。

var state = 0; 

if (state === 0) { 
    $('.sidebar-toggle').click(function() { 
     $('#page').animate({marginLeft: '230px'}, 400); 
     state = 1; 
    }); 
} 

if (state === 1) { 
    $('#sidebar').click(function() { 
     $('#page').animate({marginLeft: '0'}, 400); 
     state = 0; 
    }); 
} 
+0

它會在.sidebar-toggle點擊時觸發,而不是在#page點擊 - 對吧?你能包括你的相關HTML嗎? – Igor 2013-04-20 14:39:18

+0

該代碼只運行一次。所以狀態=== 1將永遠不會執行... – Luke 2013-04-20 14:40:35

回答

1

你都忘記使用#page click.function ......而最好的方法就是把如果click.function內嘗試這種方式

var state = 0; 

$('.sidebar-toggle').click(function() { 
    if (state===0) {  
     $('#page').animate({marginLeft: '230px'}, 400); 
     state = 1; 
    }  
}); 

$('#page').click(function() { 
    if (state===1){ 
     $('#page').animate({marginLeft: '0'}, 400); 
     state = 0; 
    } 
}); 
+1

http://jsfiddle.net/MhKMz/1/ – user2255273 2013-04-20 15:58:26

+0

.sidebar-toggle無法嵌套在#page現在嘗試: http://jsfiddle.net/3VRVC/ – 2013-04-20 21:46:21

+0

或將獲得#頁面點擊功能... – 2013-04-20 21:56:34

0

可能因爲這永遠不會執行

if (state === 1) { 
    $('#sidebar').click(function() { 
     $('#page').animate({marginLeft: '0'}, 400); 
     state = 0; 
    }); 
} 

試試這個辦法 -

var state = 0; 
    $('.sidebar-toggle').click(function() { 
     if (state === 0) { 
     $('#page').animate({marginLeft: '230px'}, 400); 
     state = 1; 
     } 
    }); 

    $('#page').click(function() { 
     if (state === 1) { 
     $('#page').animate({marginLeft: '0'}, 400); 
     state = 0; 
     } 
    });