2016-01-06 3 views
0

У меня есть этот div (в форме блока), который я хочу переместить вправо и влево, щелкнув по нему. Идея заключается в том, что первое действие для переключения работает (что означает, что блок занимает 250 пикселей пространства слева), но не будет двигаться влево после того, как я снова нажму на него.Функция Toggle не работает

$(document).ready(function() 
{ 

    $("#block1").click(function() 
    { 
     var toggleState = true; 
     if (toggleState) 
     { 
      $("#block1").animate({left: '250px'}); 
     } 
     else 
     { 
      $("#block1").animate({left: '250px'}); 
     } 
     toggleState = !toggleState; 
    }); 
}); 
+0

все еще не работает :( –

+0

Ваше конечное положение для обоих состояний переключателя также одинаково. – Draco18s

+0

Святое ... Я полностью пропустил это. Спасибо :) Решенный. –

ответ

1

Вам нужно определить toggleState вне функции мыши, в противном случае его значение постоянно переписывается. Я также определил переменную с нулевым значением и изменил левое значение условия true, но ни одна из них не была вашей основной проблемой.

var toggleState; 

$("#block1").click(function() { 
    if (toggleState) { 
     $("#block1").animate({ 
      left: '10px' 
     }); 
    } else { 
     $("#block1").animate({ 
      left: '250px' 
     }); 
    } 
    toggleState = !toggleState; 
}); 

Demo

+0

Кашель, 'else {left: 0px}' кашель. Или вы просто перемещаете его на ту же позицию, что и есть. – Draco18s

+0

Я оставлял это на ОП. Здесь не совсем уместно. – isherwood

0

У вас есть переменная toggleState внутри функции, которую нужно переместить его снаружи.