Здесь:
$('div').animate({ left: '+=' + $(this).data('moveto') }, 2000);
this
будет таким же this
, что и вне вызова функции, что эквивалентно этому:
var self = this;
$('div').animate({ left: '+=' + $(self).data('moveto') }, 2000);
и self
вероятно не тот <div>
, который вы ищете, поэтому $(this).data('moveto')
возвращает undefined
, и вы заканчиваете пытаться сделать:
$('div').animate({ left: '+=' }, 2000);
, который не делает ничего полезного. Попробуйте этот пример, и вы должны увидеть, что происходит:
http://jsfiddle.net/ambiguous/NXDKB/
Кроме того, вам, вероятно, лучше делать:
$('#me').data('moveto', 50);
вместо:
$('#me').data().moveto = 50;
Как вы обнаружили в документации (спасибо за внимание к этому BTW), $x.data()
вернет объект данных, но может случиться интересное, если $x
соответствует более чем одному элементу DOM.