javascript - 使用类属性时 jQuery 选择下一个子元素

标签 javascript jquery

<ul class="orderlines">
    <li class="orderline selected"></li>
    <li class="orderline"></li>
    <li class="orderline"></li>
</ul>

我想点击带有 selected 类属性的订单行旁边的元素,所以它变成:

<ul class="orderlines">
    <li class="orderline "></li>
    <li class="orderline selected"></li>
    <li class="orderline"></li>
</ul>

我尝试了 $('.orderline .selected').next().click() 但它仅适用于迭代同级。

无需手动应用.selected,只需单击下一个元素即可。

假设所选内容应用于列表中的最后一个元素。然后它应该找到并单击列表中的第一个元素。

最佳答案

将 jQuery 对象与 orderline 中的第一个元素组合起来,然后从组合的 jQuery 对象中获取最后一个元素。

$('.orderline.selected').next().add('.orderline:first').last().click();

$('.orderline').click(function() {
  $('.selected').removeClass('selected');
  $(this).addClass('selected');
})


setInterval(function() {
  $('.orderline.selected').next().add('.orderline:first').last().click();
}, 1000)
.selected {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="orderlines">
  <li class="orderline selected">1</li>
  <li class="orderline">2</li>
  <li class="orderline">3</li>
</ul>

工作:

  1. add() 方法将与 next() 方法返回的元素和第一个元素结合起来。
  2. 结果对象中的元素顺序与文档中的元素顺序相同,因此我们需要从组合中获取最后一个元素。
  3. 当到达最后一个 li 时,next() 返回空对象,而组合对象仅包含第一个元素,因此 last() 将选择第一个元素。<

或者我们需要检查 next() 是否返回一个元素。

//  get next element
var $ele = $('.orderline.selected').next();
// check empty or not, if empty get first element
if (!$ele.length) $ele = $('.orderline:first');
// fire click event
$ele.click();

$('.orderline').click(function() {
  $('.selected').removeClass('selected');
  $(this).addClass('selected');
})


setInterval(function() {
  var $ele = $('.orderline.selected').next();
  if (!$ele.length) $ele = $('.orderline:first').click();
  $ele.click();
}, 1000)
.selected {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="orderlines">
  <li class="orderline selected">1</li>
  <li class="orderline">2</li>
  <li class="orderline">3</li>
</ul>

关于javascript - 使用类属性时 jQuery 选择下一个子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606879/

相关文章:

javascript - Angular 表单提交事件在父组件和子组件之间触发两次

javascript - 开发 Firefox 扩展的最简单方法是什么?

asp.net - 如何使用像 Stack Overflow 一样的漂亮语法样式在网页上显示代码示例?

javascript - 将效果从 select 复制到 div

javascript - 如何使用 Jquery 使元素出现和消失。

Javascript 文件输入在 IE 中不起作用

javascript - 我的 Python 代码如何从网站获取位于 text/javascript &lt;script&gt; 中的值?

javascript - 对 MySQL 运行数据库查询后无法看到结果

Jquery post不保留换行符

javascript - ajax 单击按钮在后台运行表单