【问题标题】:Continuously add and remove class to a random element with jQuery使用 jQuery 连续向随机元素添加和删除类
【发布时间】:2023-04-03 13:16:01
【问题描述】:

假设我有一个包含十个元素的无序列表。
我希望将一个类随机添加到其中一个,然后在几秒钟后删除该类,并无限期地从另一个随机选择的元素开始。

实现这一目标的最干净的方法是什么?

编辑: 到目前为止我得到了什么:

<ul id="hideAndSeek">
  <li>...</li>
  <li>...</li>
  <li>...</li>
  <li>...</li>
  ...
</ul>

还有 jQuery:

var random = Math.floor(Math.random() * 1000);

var shownElement = $("#hideAndSeek li");
shownElement.eq(random % shownElement.length).addClass("shown");

但是,这显然不会连续运行,我不知道如何在删除类之前正确设置延迟。

【问题讨论】:

  • 到目前为止您已经尝试过什么?您已经拥有的代码在哪里?

标签: jquery class random html-lists


【解决方案1】:

您需要使用setInterval创建一个定时器,然后您可以选择一个随机数并为该项目索引设置类。

类似这样的:

HTML

<ul>
    <li>one</li>
    <li>two</li>
    <li>three</li>
    <li>four</li>
    <li>five</li>
    <li>six</li>
    <li>seven</li>
    <li>eight</li>
    <li>nine</li>
    <li>ten</li>
</ul>

Javascript(带 JQuery)

setRandomClass();
setInterval(function () {
    setRandomClass();
}, 2000);//number of milliseconds (2000 = 2 seconds)

function setRandomClass() {
    var ul = $("ul");
    var items = ul.find("li");
    var number = items.length;
    var random = Math.floor((Math.random() * number));
    items.removeClass("special");
    items.eq(random).addClass("special");
}

Here is a working example

【讨论】:

  • 像魅力一样工作!非常感谢!
  • @TomS。请注意我对随机数部分的轻微修改。最初它是 1-10,但我们想要 0-9,因为索引 (eq()) 是从 0 开始的
【解决方案2】:

可以这样做:

HTML

<ul id="randomCol">
    <li>test1</li>
    <li>test2</li>
    <li>test3</li>
    <li>test4</li>
    <li class="color">test5</li>
    <li>test6</li>
    <li>test7</li>
    <li>test8</li>
    <li>test9</li>
    <li>test10</li>
</ul>

jQuery

var tid = setInterval(changeUp, 1000);
function changeUp() {
  var i = Math.floor((Math.random()*9));
  $('#randomCol').children().removeClass('color');
   $('#randomCol').children().eq(i).addClass('color');
}

fiddle

【讨论】:

  • 我注意到您也(和我一样)更改了随机数范围,但是您当前的代码将生成 1-9,而不是 0-9。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多