javascript - 打乱所有具有相同类别的标签

标签 javascript jquery

如何打乱具有相同类别的标签?这是我想做的一个例子

<div>
A. <label class="shuffle">1</label>
B. <label class="shuffle">2</label>
C. <label class="shuffle">3</label>
</div>

A. 1
B. 2
C. 3

这将是我的预期输出。

A. 3
B. 1
C. 2

我一直在尝试THIS解决方案,但似乎在随机播放时它会附加在底部。

最佳答案

最简单的方法是打乱文本字符串数组并替换每个文本字符串中的文本

这可以避免尝试交换元素,因为您还有其他文本节点与每个元素内联,并且希望这些文本节点保持在原位。

var $labels = $('.shuffle'),
  // map text of each to array
  textArr = $labels.map(function(_, el) {
    return $(el).text()
  }).get()
  // random sort text array
  .sort(function() {
    return Math.random() - .5;
  });
  // set new text using matching index in sorted text array
  $labels.text(function(i){
     return textArr[i];
  })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
A. <label class="shuffle">1</label>
B. <label class="shuffle">2</label>
C. <label class="shuffle">3</label>
</div>

关于javascript - 打乱所有具有相同类别的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143630/

相关文章:

javascript - 如何在 React 中使用每个 map 上的状态?

javascript - 关于下拉菜单

jquery - IE8 : invisible third-level navigation menu in Foundation 5. 2

javascript - 如何解决“未定义的错误 "Uncaught TypeError: Cannot call method 'changePage”

javascript - 单击下一个弹出窗口时,第一个弹出窗口不会关闭

javascript - 创建用户时将数据写入 Firestore 不起作用

php - 使用 PHP 更新后,在数据库中插入的日期格式错误?

javascript - AngularJS中的动态复选框过滤

Javascript : Prevent overlapping on images that are sized randomly

php - 插入(或以有组织的方式为 "shuffling")从 MySQL 数据库获取的值