我正在尝试找到元素的父级,并且它是父级的第一个子级,代码是这样的:
<ul class="lowerMenu">
<li><a href="" class="selected">Welcome</a></li>
<li><a href="">Logo</a></li>
<li><a href="">Websites</a></li>
<li><a href="">Stationery</a></li>
<li><a href="">Illustration</a></li>
<li><a href="">Full Pack</a></li>
</ul>
function setIntervalAndExecute() {
changeImages();
setTimeout(function(){
showImages(imagesArray);
},500);
var intervalot = window.setInterval(function(){
changeImages();
var selected = $('.selected');
if (!selected.parent().is(':last-child')) {
$('.selected').parent().next().children().addClass('selected');
selected.removeClass('selected');
} else {
$('.selected').parent().parent().children(':first-child').addClass('selected');
selected.removeClass('selected'); // nesho ne mi rabotit ovdeki
}
window.setTimeout(function(){
showImages(imagesArray);
},500);
},10000);
return intervalot;
}
var intervalot = setIntervalAndExecute();
我知道它有点复杂,但我是jquery的新手,所以我要做的是在“选择”类到达最后一个元素之后,我想删除它并将其设置为第一个元素。我试过这个,但它似乎没有工作
$('.selected').parent().parent().children(':first-child').addClass('selected');
当它到达最后一个元素时,间隔执行两次然后停止。 这是我正在努力的网站:
答案 0 :(得分:19)
如果你上升两个级别,然后找到下一个孩子,你只会降低一个级别 - 你在selected
上设置<li>
课程,而不是{{1}在它下面..你需要进入另一个层次。所以它应该是:
<a>
到达那里的另一种方法是:
$('.selected').parent().parent().children(':first-child').children().addClass('selected');
答案 1 :(得分:4)
$('.selected').parent().siblings(':first-child').children().addClass('selected');
<强> FIDDLE DEMO 强>
答案 2 :(得分:-1)
$('.selected').closest('ul').find('li:first').addClass('selected');
参考closest
答案 3 :(得分:-1)
在层次结构中不需要完全遍历父对象,您可以这样使用parents()
而不是parent()
$('.selected').parents('ul.lowerMenu').children(:first-child').addClass('selected');
试试这个有用!!