在jquery中为div位置添加一个变量Number?

时间:2010-08-20 07:25:25

标签: jquery variables css

我得到了以下代码来处理.animate,但它不会与标准的css属性一起,有人能告诉我为什么吗?

var xMove = 200;
$("#clickhere").click(function() { 
$("#object").css({left: '+='+xMove});  
});

现在有了一些类似的工作方法,并且一路上学习了一些语法,很好地展示了人们,Ta!

5 个答案:

答案 0 :(得分:1)

您无法在常规CSS中使用+=运算符。获取当前位置并从中计算新位置:

var xMove = 200;
$("#clickhere").click(function() {
  $("#object").css({ left: ($('#object').position().left + xMove) + 'px' });
});

答案 1 :(得分:0)

尝试

$(document).ready(function(){
  var xMove = 200;
  var object = $('#object');
    $("#clickhere").click(function() {
        object.animate({
            left:  (object.position().left + xMove) + 'px'
        });  
    });
});

请记住,使用css left属性时,#object需要具有绝对位置或相对位置。如果它是静态的,你可以尝试为margin-left设置动画。

答案 2 :(得分:0)

添加CSS属性position,并将其设置为relative;它会工作的。我还删除了+=,因为它不属于那里:

var xMove = 200;
$("#clickhere").click(function() { 
    $("#object").css({position: "relative",left: xMove});  
});

如果您想在每次点击object时将xMove定义的像素数向右移动,可以使用以下代码段:

var xMove = 200;
$("#clickhere").click(function() {
    var obj = $("#object");
    var currentPosition = obj.position().left;
    obj.css({position: "relative",left: currentPosition + xMove});  
});

答案 3 :(得分:0)

试试这个,应该有效,

var leftpos = $("#object").css("left"); // get the current left position
var left = parseFloat(leftpos , 10);
left += 200;
var toShift = left + "px";
$("#object").css("left", toShift );

答案 4 :(得分:0)

2件事。首先,除非您设置不同的left类型,否则position在CSS中不执行任何操作。因此,请确保#object具有position:relative(或绝对或固定)。

其次,你不能在值字符串中使用+=。您必须获取值添加您的值,然后将其设置为执行此操作。

查看此工作示例:http://jsfiddle.net/d9LnJ/4/

但实际上,为什么不使用.animate