html - 页面加载时的随机 Div 顺序

标签 html

<分区>

我有一堆 ID 为“gallerycard”的 div。我需要它们在每次用户访问页面时以随机顺序加载。

<div id="gallerycard">
     <div id="name">Akulina</div>
    <div id="info">N/A</div>
</div>

<div id="gallerycard">
     <div id="name">Martina</div>
    <div id="info">N/A</div>
</div>

<div id="gallerycard">
     <div id="name">Joseph</div>
    <div id="info">N/A</div>
</div>

<div id="gallerycard">
     <div id="name">Karen</div>
    <div id="info">N/A</div>
</div>
...    

还有……

这是 CSS 的 fiddle : http://jsfiddle.net/BwJHj/

我知道这对你们大多数人来说是一项简单的任务,但有时我真的很难使用 jquery :(

谢谢

最佳答案

HTML

首先将所有 id 更改为 classes,因为 id 在页面上必须是唯一的。

<div class="gallerycard">
     <div class="name">Akulina</div>
    <div class="info">N/A</div>
</div>

<div class="gallerycard">
     <div class="name">Martina</div>
    <div class="info">N/A</div>
</div>

<div class="gallerycard">
     <div class="name">Joseph</div>
    <div class="info">N/A</div>
</div>
...    

CSS(因为标记现在使用类切换样式来反射(reflect))

.gallerycard {
    margin: 8px;
    float: left;
    height: 150px;
    width: 221px;
    background-color: rgba(0, 0, 0, .3);
    border-radius: 8px;
}

Javascript

从 DOM 中选择所有卡片元素,然后生成两个介于 0 和 cards.length 之间的随机数。使用 eq 在所选元素中选择一个随机元素,并将其放置在所选元素集合中另一个随机选择的元素之前。

var cards = $(".gallerycard");
for(var i = 0; i < cards.length; i++){
    var target = Math.floor(Math.random() * cards.length -1) + 1;
    var target2 = Math.floor(Math.random() * cards.length -1) +1;
    cards.eq(target).before(cards.eq(target2));
}

JS fiddle : http://jsfiddle.net/BwJHj/1/

关于html - 页面加载时的随机 Div 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18483241/

相关文章:

html - 通过阻止 GET/POST 中的 HTML 标记来防止 XSS

css - 在 Html 中包含 Html 代码

javascript - 页面加载时发生空请求时如何防止 500 GET 错误?

javascript - 提交给 servlet 的隐藏表单字段值不正确

html - 如何固定一个 div 并使其处于最前 View

html - 如何使图像的一部分可点击?

javascript - 如何将第一列位置固定在表格上?

javascript - 我想清除 jQuery 存储的所有数据

javascript - 生成一致标签的简单、丰富的 JavaScript 文本编辑器?

html - 即使分辨率独立对齐,按钮也不居中