2016-02-05 51 views
2

我正在尝试使用jQuery和css从当前位置移动元素位置。但是,我使用似乎并没有语法上,做任何事情:使用增量移动css位置

var ball = $("#ball1"); 
var movement = { 
    x: 5, 
    y: 5 
} 
ball.css({ 
    top: "+="+movement.y, //+= adds the value 
    left: "+="+movement.x 
}); 

任何人都可以证实,如果我的ball.css({下的代码是正确的?

回答

5

这是不正确的。你给使用这样

ball.css({ 
    top: parseInt(ball.css('top')) + movement.y + 'px', 
    left: parseInt(ball.css('left')) + movement.x + 'px' 
}); 

获取计算样式属性在匹配的元素集合的第一个元素。

,你可以在documentation网站上看到,jQuery.css会给我们的计算值,这意味着我们没有得到15如果left15px,例如。为此,我们必须使用parseInt。检查这个答案更好的用法parseInt。因此,这应该在它的工作,但有人回答对后,我们可以创建一个jQuery插件,让它看起来更好:

jQuery.fn.cssNumber = function(prop){ 
    var v = parseInt(this.css(prop), 10); 
    return isNaN(v) ? 0 : v; 
}; 

ball.css({ 
    top: ball.cssNumber('top') + movement.y + 'px', 
    left: ball.cssNumber('left') + movement.x + 'px' 
}); 

我也为你创建了一个working example

+0

圣钼,乌尔男人! :) – MarksCode

+0

很高兴你喜欢它:) – Victor

+0

我试过阅读Jquery.fn文档,但我不完全理解它。它重写'cssNumber'还是创建一个名为'cssNumber'的新函数? – MarksCode

0

尝试......

ball.css({ 
    top: +movement.y, 
    left: +movement.x 
}); 
+0

这似乎移动它,然后它回到它的原始 – MarksCode

+0

@MarksCode你可以把你的代码放在一个小提琴中,以便于理解吗? – Illaya

+0

是的,在这里你去,谢谢你的帮助:) https://jsfiddle.net/vo1zysds/在我的本地机器上有一个“BlueBall.png”,但它不会出现在小提琴 – MarksCode