【问题标题】:Find parent and first child of it's parent找到它的父母的父母和第一个孩子
【发布时间】:2013-09-03 02:04:19
【问题描述】:

我试图找到一个元素的父元素,它是父元素的第一个子元素,代码是这样的:

        <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”类到达最后一个元素之后,我要删除它并将其设置为第一个元素。我已经尝试过,但它似乎不起作用

$('.selected').parent().parent().children(':first-child').addClass('selected');

当它到达最后一个元素时,间隔执行两次然后停止。 这是我正在开发的网站:

http://nikodola.com/testsite

【问题讨论】:

    标签: jquery parent children css-selectors


    【解决方案1】:
    $('.selected').parent().siblings(':first-child').children().addClass('selected');
    

    FIDDLE DEMO

    【讨论】:

      【解决方案2】:

      不需要在层次结构中一个接一个地完全遍历到父级,您可以使用parents()而不是parent()这种方式

      $('.selected').parents('ul.lowerMenu').children(:first-child').addClass('selected');
      

      试试看,这行得通!!

      【讨论】:

        【解决方案3】:
        $('.selected').closest('ul').find('li:first').addClass('selected');
        

        参考closest

        【讨论】:

          【解决方案4】:

          如果你上两层,然后找到下一个孩子,你只会下一层——你在&lt;li&gt;上设置selected类,而不是它下面的&lt;a&gt;。你需要下一个层次。所以应该是:

          $('.selected').parent().parent().children(':first-child').children().addClass('selected');
          

          到达那里的另一种方法是:

          $('.selected').parent().siblings(':first-child').children().addClass('selected');
          

          【讨论】:

          • 完美,非常感谢:D 我知道这是一件小而愚蠢的事情.. 但是 child() 我把 children() 因为它不能那样工作
          猜你喜欢
          • 2018-01-15
          • 2019-07-23
          • 1970-01-01
          • 2016-03-05
          • 2014-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多