在jQuery中计算百分比

时间:2018-09-11 04:32:36

标签: javascript jquery

我正在尝试基于div中的子项来计算宽度百分比,但是由于某些原因,它无法按预期工作。

$.each($("div.row"), function(index) {
  let c = $(this).find("div.col").length;

  if (c <= 12) {
    let p = parseInt(c) / parseInt(12) * 100;

    console.log({
      count: c,
      perc: p,
      one: c / 12
    });

    $(this).find("div.col").css("width", p.toString() + "%");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- begin snippet: js hide: false console: true babel: false -->

<div class="row">
  <div class="col">COL 1</div>
  <div class="col">COL 2</div>
  <div class="col">COL 3</div>
  
</div>

但是我得到了一些意想不到的结果。如果.row包含3个.col元素,我预计将获得约33%,因此这些元素将填充父元素,但它返回25。

我认为这应该很容易..我是在做错事还是有另一种方式?

1 个答案:

答案 0 :(得分:2)

只需将行let p = parseInt(c) / parseInt(12) * 100;更改为p = 100/parseInt(c)就可以了

$.each($("div.row"), function (index) {
    let c = $(this).find("div.col").length;

    if (c <= 12) {
         let p = 100/parseInt(c);

        console.log({ count: c, perc: parseInt(p), one: c / 12 });

        $(this).find("div.col").css("width", p.toString() + "%");
    }
});
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<div class="row">
    <div class="col">COL 1</div>
    <div class="col">COL 2</div>
    <div class="col">COL 3</div>
    
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
</div>
</body>
</html>