2016-02-26 67 views
1

我试图创建一个简单的系统,它将使用jQuery将网格框定位在网格系统中。Jquery .each()如果语句不按预期工作

目前进展

我已创建网格定位系统,它通过侧定位他们侧。

  var XPosition = 0; 
      var YPosition = 0; 

      $(".boxes").each(function() { 
       $(this).css("left", XPosition); 
       $(this).css("top", YPosition); 
       $(this).css("height", $(".boxes").width()); 

       if (XPosition += $(this).width() < $("#gridCon").width()) { 
        XPosition += $(".boxes").width()-1; 
        console.log($("#gridCon").width()); 
        console.log(XPosition); 
       } else { 
        console.log(YPosition); 
        XPosition = 0; 
        YPosition += $(".boxes").height(); 
       } 

的问题

网格超出这是不期望的屏幕宽度。我厌倦了创建一个旨在重置左侧位置并将其放在新行上的if语句。然而if语句似乎并没有被正确地运行,因为我似乎并没有能够得到else语句

的jsfiddle -https://jsfiddle.net/wLoqx4mj/

+0

您递增x向位置两次 – charlietfl

+0

喔亲爱的,我将它添加在IF语句为好,车现在 –

+0

还要注意''(“。boxes”).width()'将总是返回第一个值...你想要循环内的实例 – charlietfl

回答

0

猜你需要额外的对括号在第一线if-condition

if ((XPosition += $(this).width()) < $("#gridCon").width()) { 
        XPosition += $(".boxes").width()-1; 
        console.log($("#gridCon").width()); 
        console.log(XPosition); 
       } else { 
        console.log(YPosition); 
        XPosition = 0; 
        YPosition += $(".boxes").height(); 
       } 

Fiddle

+0

当然,我很愚蠢:)谢谢你,你知道为什么它现在增加两次? –

+0

一列中应该有多少列? –

+2

我很抱歉,我将它添加到了如果使用+ =的情况下,我应该只使用+。干杯 –