如何使用javascript更改html中元素的顺序

Ank*_*vda 3 html javascript css jquery

我正在创建一个简单的游戏,有 9 个分区,每个 8 个分区中都隐藏着一只企鹅,第 9 个分区中有一个怪物。现在我的游戏运行良好,但我想做的是每次加载页面时,分区的排列都应该改变,以便为游戏添加随机性。

这是我的代码:

$(document).ready(function() {
  //This code will run after your page loads
  $('body').on('mousedown', '.yeti', function(event) {
    alert("Yaaaarrrr!");
  });
});
Run Code Online (Sandbox Code Playgroud)
<div class="gameholder">
  <div class="title"></div>
  <div class="penguin1"></div>
  <div class="penguin2"></div>
  <div class="penguin3"></div>
  <div class="penguin4"></div>
  <div class="penguin5"></div>
  <div class="penguin6"></div>
  <div class="penguin7"></div>
  <div class="penguin8"></div>
  <div class="yeti"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

添加图像和一些定位后,div这就是它的样子

:

Rio*_*ams 5

控制好你的动物

考虑为所有游戏元素创建一个容器,因为您只想随机化它们的顺序,因为您不想让标题与所有这些元素混合在一起:

<div class='game-container'>
    <div class="penguin1"></div>
    <div class="penguin2"></div>
    <div class="penguin3"></div>
    <div class="penguin4"></div>
    <div class="penguin5"></div>
    <div class="penguin6"></div>
    <div class="penguin7"></div>
    <div class="penguin8"></div>
    <div class="yeti">
</div>
Run Code Online (Sandbox Code Playgroud)

将它们洗牌

这应该使它们更容易通过一个简单的 jQuery 扩展函数进行随机化,就像这个相关线程中提到的这个函数一样:

$.fn.randomize = function(selector){
    (selector ? this.find(selector) : this).parent().each(function(){
        $(this).children(selector).sort(function(){
            return Math.random() - 0.5;
        }).detach().appendTo(this);
    });
    return this;
};
Run Code Online (Sandbox Code Playgroud)

您可以在页面加载后简单地调用以下命令来组合这两种方法:

$(document).ready(function(){
    // Define your randomize function here

    // Randomize all of the elements in your container
    $('.game-container').randomize('div');
});
Run Code Online (Sandbox Code Playgroud)

例子

在此输入图像描述

<div class='game-container'>
    <div class="penguin1"></div>
    <div class="penguin2"></div>
    <div class="penguin3"></div>
    <div class="penguin4"></div>
    <div class="penguin5"></div>
    <div class="penguin6"></div>
    <div class="penguin7"></div>
    <div class="penguin8"></div>
    <div class="yeti">
</div>
Run Code Online (Sandbox Code Playgroud)
$.fn.randomize = function(selector){
    (selector ? this.find(selector) : this).parent().each(function(){
        $(this).children(selector).sort(function(){
            return Math.random() - 0.5;
        }).detach().appendTo(this);
    });
    return this;
};
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function(){
    // Define your randomize function here

    // Randomize all of the elements in your container
    $('.game-container').randomize('div');
});
Run Code Online (Sandbox Code Playgroud)