1

我有一个 for 循环。

for (var i = 0; i < 15; i++) {
            var gridResult = Math.floor(Math.random() * 77) + 1;
            $(['data-x='+gridResult+']').append('<div></div>');
        }

<html>
<div class="grid" data-x="0"></div>
...
<div class="grid" data-x="77"></div>

现在我希望它重复该步骤,如果它检测到在先前的迭代之一中已经分配了一个元素,那么不会有 2 个 div 分配给同一个元素。

我尝试通过使用:

if ($(this).children().length > 1) {
                    return;
                }

但这并没有奏效,因为仍然有附加了 2 个 div 的元素。

提前致谢。

4

1 回答 1

2

为了实现您的目标,您可以if在循环中添加条件。如果在目标中找到子元素,您可以从减 1i以强制循环再次重复。尝试这个:

for (var i = 0; i < 15; i++) {
  var gridResult = Math.floor(Math.random() * 77) + 1;
  let $target = $(['data-x=' + gridResult + ']');
    if ($target.children().length) {
      i--; // repeat the action
    } else {
      $target.append('<div></div>');
    }
  }
}
于 2020-11-27T11:12:36.507 回答