2013-04-20 2 views
0

Я использую следующий код, чтобы показать боковую панель, когда нажата кнопка sidebar toggle, и скрыть боковую панель при нажатии # страницы.переменная jQuery не изменяется вне функции

Показать боковую панель работает идеально, но не скрывается при нажатии # страницы. Похоже, что переменная не установлена ​​в 1, когда был нажат переключатель .sidebar-toggle.

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

It будет срабатывать на .sidebar-toggle click, а не #page-щелчок - правильно? Можете ли вы включить соответствующий HTML-код? – Igor

+0

код запускается только один раз. поэтому состояние === 1 никогда не будет выполнено ... – Luke

ответ

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

+0

.sidebar-toggle can not быть вложенным в #page. Попробуйте сейчас: http://jsfiddle.net/3VRVC/ –

+0

или он получит функцию #page click ... –

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; 
     } 
    }); 
Смежные вопросы