2013-08-18 5 views
0

Я пытаюсь анимировать «div» в мобильной версии моего сайта.marginLeft как переменная Javascript

$(function(){ 
    $("#iconReorder").bind("tap", tapHandler); 

     function tapHandler(event){ 
      $("#iconReorder").animate({ 
       marginLeft: "15px" 
       }, 500); 
     } 
}); 

Когда «ДИВ» Виль изменить положение, я хотел бы иметь возможность еще раз нажать на него, и пусть он вернется в положение по умолчанию.

Я попытался создать оператор 'if' ... но я не могу понять, почему он не работает. Я бы предпочел «marginLeft» моего «div» в качестве переменной для моего кода javascript, чтобы переместить его вправо, если «marginLeft = 10px» и переместить его влево (позиция по умолчанию), если «новый» «marginLeft больше не равен 10px. Я попытался с помощью следующего кода:

var x = ("#iconReorder").style.marginLeft;  

    if (x = "10px") { 
     $(function(){ 
      $("#iconReorder").bind("tap", tapHandler); 

      function tapHandler(event){ 
       $("#iconReorder").animate({ 
        marginLeft: "15px" 
       }, 500); 
      } 
     }); 
    } else { 
     $(function(){ 
      $("#iconReorder").bind("tap", tapHandler); 

      function tapHandler(event){ 
       $("#iconReorder").animate({ 
        marginLeft: "10px" 
       }, 1000); 
      } 
     }); 
    } 

Может кто-нибудь мне помочь? Я надеюсь, что то, что я сказал, понятно. Спасибо

+4

для начала, в строке 3 вы сделали распайка ('х = "10px"') вместо сравнения ('х === "10px"') – guessimtoolate

+0

'(" # iconReorder ") style.marginLeft. '=>' document.querySelector ("# iconReorder"). style.marginLeft; ' –

+1

, тогда' bind' - это устаревший метод в jquery в настоящее время (теперь это не повлияет на ваш код, но не будет вредным для обновления - - см. метод 'on'). И этот оператор if мог бы просто сидеть внутри 'tapHandler' (наряду с' x'). – guessimtoolate

ответ

0

Так что, если я правильно понял, то это должно сделать:

var x = $("#iconReorder");  

x.on('tap', function() { 
    var to = '10px', time = 1000; 
    if (x.css('margin-left') === '10px') { 
     to = '15px'; 
     time = 500; 
    } 
    x.animate({ 
     marginLeft: to 
    }, time); 
}); 

или in action. Я заменил событие tapclick, чтобы я мог видеть, что я делаю. В любом случае, теперь он должен работать лучше.

Возможно, существует какой-то более тонкий способ заставить его работать, но я не могу думать о нем на данный момент (может быть, какой-то метод toggle).

+0

Я создал скрипку. Это пример. Я пробовал с marginLeft, потому что это самое легкое решение, которое я нашел ... В принципе, я бы хотел переместить поле вправо при первом щелчке и переместить его влево при втором щелчке. Возможно, вы можете найти лучшее решение (вместо предположения marginLeft как переменной) (http://jsfiddle.net/V6GBB/) –

+0

Где ссылка на него? Мое решение работает для вас? – guessimtoolate

+0

Извините, я отредактировал предыдущий комментарий. Mmh нет, решение не работает :( –

0

попробовать этот

$("#iconReorder").animate({ 
    'margin-left': 15 
}, 500);