当前位置: 首页 > 知识库问答 >
问题:

如何用纯javaScript在jQuery中使用end()

谭繁
2023-03-14

我想将一个元素返回到链中的第一个元素,只要我有一个像这样的代码

<ul class="items">
  <li class="item-child">list item 1</li>
  <li class="item-child">list item 2</li>
  <li class="item-child">list item 3</li>
</ul>

然后我想激活一个叫active的类,只有在第一个元素和其他元素中将没有叫active的类,下面的元素将向上移动以替换第一个元素,而第一个元素将返回链中。

这段使用jQuery的代码如下所示

null

$(".items > .item-child:gt(0)").removeClass("active");

setInterval(function() {
  $(".items > .item-child:first").removeClass("active");
  setTimeout(function() {
    $(".items > .item-child:first")
      .next()
      .addClass("active")
      .end()
      .appendTo(".items")
  }, 4000)
}, 10000)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="items">
  <li class="item-child">list item 1</li>
  <li class="item-child">list item 2</li>
  <li class="item-child">list item 3</li>
</ul>

null

这是我在寻找解决方案时生成的代码

null

js lang-js prettyprint-override">document.querySelector('.items > .item-child:not(:first-child)').classList.remove('active')
setInterval(function() {
  var otif = document.querySelectorAll('.items > .item-child:first-child');
  otif.forEach(function(e) {
    e.classList.remove('active');
  });
  setTimeout(function() {
    document.querySelectorAll('.items > .item-child:first-child').forEach((e) => {
      e.nextElementSibling.classList.add('active');
      console.log(e.nextElementSibling)
    })
  }, 4000)
}, 10000)
<ul class="items">
  <li class="item-child">list item 1</li>
  <li class="item-child">list item 2</li>
  <li class="item-child">list item 3</li>
</ul>

null

共有1个答案

景宏朗
2023-03-14

我查看了前面的问题代码,并意识到您想要做什么,然后使用vanilla JavaScript将下面的演示放在一起。诚然,我用一些随机的图像使它变得很有趣,但我认为它本质上与您最初使用jquery所做的一样

null

const _INTERVAL=5;
        
( function( i ){

  // find the parent element - UL
  let ul=document.querySelector('ul.items');

  (function(){
    setTimeout( arguments.callee, 1000 * i );
    // remove the active class from ALL li elements
    ul.querySelectorAll('li.active').forEach( li => { li.classList.remove('active') } );

    // take the element node and the text node and move to the bottom of the list
    ul.append( ul.childNodes[0] );
    ul.append( ul.childNodes[1] );

    // add the `active` class to the first element 
    ul.firstElementChild.classList.add('active');
  })();
})( _INTERVAL );
ul.items{ list-style:none!important; }
.items li{ margin:0.5rem auto }

.active{ color:red; }
.active:after{
  content:'';
  display:inline-block;
  height:6rem;
  width:12rem;
  background-image:url( //static.thenounproject.com/png/438141-200.png );
  background-size:contain;
  background-repeat:no-repeat;

  animation: shake 0.25s cubic-bezier(.36,.07,.19,.97) both;
}
li > img{ border-radius:0.5rem; border:1px solid gray; padding:0.25rem;}
.active > img{ box-shadow:0 0 15px rgba(255,0,0,0.5);animation: shake 1.25s cubic-bezier(.4,.08,.29,.97) both;}


@keyframes shake {
  10%, 90% {
  transform: translate3d(-1px, 0, 0) rotate(0deg);
  }
  20%, 80% {
  transform: translate3d(2px, -5px, 0) rotate(-5deg);
  }
  30%, 50%, 70% {
  transform: translate3d(-4px, 5px, 0) rotate(5deg);
  }
  40%, 60% {
  transform: translate3d(4px, -5px, 0) rotate(-10deg);
  }
}
<ul class='items'>
  <li class='active'><img src='//placem.at/things?w=200&h=100&random=1&txt=1' /></li>
  <li><img src='//placem.at/things?w=200&random=2&h=100&txt=2' /></li>
  <li><img src='//placem.at/things?w=200&random=3&h=100&txt=3' /></li>
  <li><img src='//placem.at/things?w=200&random=4&h=100&txt=4' /></li>
  <li><img src='//placem.at/things?w=200&random=5&h=100&txt=5' /></li>
</ul>
 类似资料:
  • 问题内容: 我四处张望,我所能找到的就是关于jQuery的信息。 在SO的伟大思想者的大力帮助下,我终于完成了表单验证(目前仅是客户端,但这是因为它是任务)。我现在需要使用AJAX将表单提交到PHP文件。 我的要求是验证它是通过AJAX调用的,验证所有必填字段都具有值,并返回成功状态,包括处理它的服务器时间。 JS小提琴 form动作现在是空的,无法进行测试,但最终将使用下面的代码调用form.p

  • 问题内容: 如何检查服务器上的文件是否存在jQuery或纯JavaScript中? 问题答案: 使用jQuery: 编辑: 这是不使用jQuery即可检查404状态的代码 进行较小的更改,它可以检查状态HTTP状态代码200(成功)。 编辑2:由于不推荐使用同步XMLHttpRequest,因此您可以添加如下所示的实用程序方法以使其异步:

  • 问题内容: 如何使用JavaScript变量作为jQuery选择器中的参数? 基本上,我想做的是能够隐藏一个元素,该元素等于被单击的元素的名称。 问题答案: 或者,您可以执行以下操作。 或者,您也可以发挥作用。 如果要永久删除整个元素,请从页面中删除。 您也可以在此使用它。

  • 问题内容: 我想使用Selenium单击使用JQuery动态创建选项卡的网站的选项卡。有一个问题,因为它是动态创建的,并且该选项卡没有绑定任何ID(仅提供了类ID),所以我没有足够的线索使用Selenium单击它。 谷歌搜索2周后,我发现可以通过将JQuery注入Selenium中并重新包装使其支持JQuery API来使用JQuery来完成。但是现在的问题是我不知道如何在Selenium中触发J

  • 问题内容: 我正在使用一个向服务器上的PHP脚本发出POST ajax请求的应用程序。该脚本将查询数据库并以数组形式返回记录行。(每行一个数组,其中包含id,title等元素)。然后,我想使用对该数组进行编码,并将其传递回javascript,它将使用它来显示记录。 1)如何将JSON编码的字符串返回给javascript?2)javascript将如何遍历行并访问其字段? 问题答案: 要使用jQ

  • 问题内容: 我在XHTML中使用facelets,richfaces和ajax,在 创建datepicker时遇到错误!我的问题有什么解决方案? 代码是: 我得到的错误是: 请告诉我原因。 问题答案: 我的问题是: 如何在xhtml中使用jQuery? 我的答案是: 1.使用下面给出的代码创建一个xhtml页面。 2.然后尝试将 JQuery.xx.js和css 文件放在下面的顺序中! -– We