变量后 - =属性

时间:2014-07-27 19:47:27

标签: javascript jquery

如何在动画jQuery中使用 - =属性后插入变量?

var slideObject = $('.object').width();

$('.next').on('click', function(){
    event.preventDefault();

    //See -=slideObject
    $(slideContainer).animate({ marginLeft: -=slideObject}, 500);
});

控制台出错:

  

未捕获的SyntaxError:意外的令牌 - =

1 个答案:

答案 0 :(得分:1)

您没有正确使用您的活动:

$('.next').on('click', function( event ){ // << pass as argument

你也应该使用"-="+ variable

var slideObject = $('.object').width();

$('.next').on('click', function( event ){
    event.preventDefault();
    $(slideContainer).animate({ marginLeft: "-="+ slideObject}, 500);
});

查看我们作为 Object Literal 传递给.animate()方法的参数:

var obj = {
   marginLeft   : 200,       // Valid  (Number)
   marginRight  : "100",     // Valid  (String)
   marginTop    : topValue,  // Valid  (Variable)
   marginBottom : "100px"    // Valid  (String)
}

(确切地说,您可以将上述内容用作$(slideContainer).animate(obj, 500);

在此示例中的位置:

var obj = {
   marginLeft   : -=200,     // Unexpected Token Error
   marginRight  : "-=100"    // Valid  (String)
}

因此jQuery通常期望它是一个有效的Object。通常是一个字符串值,如"200px"
为了让我们的生活更轻松,我们可以使用数字值:200,而不是使用px默认情况下将其内部转换为字符串:"200px"
它允许我们在Animate对象内传递{marginLeft : margVal}之类的变量,但-=margVal不再是有效的对象属性值,而是 Unexpected token - = 。如果将它转换为String将您的运算符与变量连接起来,jQuery将会看到"-=200"一个有效的字符串。

另请注意,如果slideContainer已经是jQuery对象,则无需再将其包装到jQuery $()中。