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

标签 javascript jquery html css

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

这是我的代码:

$(document).ready(function() {
  //This code will run after your page loads
  $('body').on('mousedown', '.yeti', function(event) {
    alert("Yaaaarrrr!");
  });
});
<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>

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

:

最佳答案

控制住你的动物

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

<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>

将它们洗牌

这应该使它们更容易通过一个简单的 jQuery 扩展函数随机化,就像 this related thread 中提到的这个函数:

$.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;
};

您可以将这两种方法结合起来,只需在您的页面加载后调用以下命令即可:

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

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

示例

enter image description here

$.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;
};
// Randomize all of the <div> elements in your container
$(".game-container").randomize('div');
.game-container { width: 300px; }

.penguin { background: url('http://vignette1.wikia.nocookie.net/farmville/images/b/be/Baby_Penguin-icon.png/revision/latest?cb=20110103080900'); height: 100px; width: 100px; display: inline-block; }
.yeti { background: url('http://www.badeggsonline.com/beo2-forum/images/avatars/Yeti.png?dateline=1401638613'); height: 100px; width: 100px; display: inline-block; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class='game-container'>
  <div class='penguin'></div>
  <div class='penguin'></div>
  <div class='penguin'></div>
  <div class='penguin'></div>
  <div class='penguin'></div>
  <div class='penguin'></div>
  <div class='penguin'></div>
  <div class='yeti'></div>
  <div class='penguin'></div>
</div>

关于javascript - 如何使用javascript更改html中元素的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548713/

相关文章:

javascript - 如何在 Angular JS 中点击按钮添加类

javascript - 如何使应用/调用/绑定(bind)在这里工作?

javascript - 我无法让我的 jQuery Accordion 在点击时折叠?

javascript - 使用Object.create和toString.call()返回 '[object Rectangle]'

javascript - 在 IE8 中强制重新计算样式-

jquery - 设置多选框的高度

javascript - 如何使用 Node.js 查询 mysql 数据库以通过 url 中的名称(而不仅仅是 ID)获取特定用户(字段)

jquery 数据表。如何获取过滤(可见)行

android - 如何在没有webview的情况下在android中显示HTML内容

php - 选项值未提交到 MySQL 数据库 PHP