Javascript 选择:使用jquery的最后一个子项

Javascript 选择:使用jquery的最后一个子项,javascript,jquery,Javascript,Jquery,我有一个旋转木马,菜单区域中的每个锚点都链接到所选幻灯片,当菜单中的锚点被选中时,它会收到一个.active类。 例:连杆1=滑块1。 当旋转木马到达最后一个滑块时,我尝试添加一个停止按钮,而不是下一步 <nav class="meniu"> <a href="#">Slide 1</a> <a href="#">Slide 2</a> <a href="#">Slide 3</a> &l

我有一个旋转木马,菜单区域中的每个锚点都链接到所选幻灯片,当菜单中的锚点被选中时,它会收到一个.active类。 例:连杆1=滑块1。 当旋转木马到达最后一个滑块时,我尝试添加一个停止按钮,而不是下一步

<nav class="meniu">
    <a href="#">Slide 1</a>
    <a href="#">Slide 2</a>
    <a href="#">Slide 3</a>
</nav>
<div id="slider">
    <ul>
        <li>Slide 1</li>
        <li>Slide 2</li>
        <li>Slide 3</li>
    </ul>
</div>
这是小提琴-

试试这个:

if ($('.meniu a:last').hasClass('active')){
    //change button arrow to stop sign
}

我希望这会有帮助。

好的,这是你的问题

当只使用来回按钮时,您将获得具有“active”类的元素,并删除该类,然后将其添加到下一个同级。问题出在这里。如果只使用这些按钮,则不会将任何锚点实际设置为活动。因此,查找活动的jquery选择器返回0。没有next,因此无法检查最后一个元素是否处于活动状态

现在,如果单击一个链接,然后使用按钮,它会工作,因为至少有一个锚点已设置为活动

这是一把小提琴

我更新了gonext函数

function goNext() {
    if (decount != counter) {
        $('#slider ul').animate({
            left: '-=' + $('#slider').width()
        }, 800, 'swing', function () {

        });
        if ($('.active').length == 0) {
            $('.meniu a:first-child').addClass('active');
        }
        $('.active').removeClass('active').next().addClass('active');
        if ($('.meniu a:last-child').hasClass('active')) {
            console.log('change button');
        }

        decount++;
        window.location.hash = decount;

    }
}
请注意,我添加了一个检查,以查看是否有任何锚点设置为活动。如果没有,我将第一个子对象设置为活动。我还添加了更改按钮if语句。现在它被击中了

此外,我还更新了click事件

$('.meniu a').on('click', function () {
    var goTo = this.id * -$('#slider').width() + $('#slider').width();
    $('#slider ul').animate({
        left: goTo
    }, 800, 'swing', function () {});
    $('.active').removeClass('active');
    $(this).addClass('active');
    decount = this.id;
    window.location.hash = this.id;
    if ($('.meniu a:last-child').hasClass('active')) {
        console.log('change button');
    }


});
现在它检查最后一个锚点

编辑:我再次更新了小提琴,使其具有实际的按钮更改功能


您创建的fiddle中缺少插件引用,请在外部插件的部分添加外部插件。您尝试在何处添加if语句?您的fiddle不完整…请尝试此if$'。meniu a:last child'。hasClass'active'{//changes here with button}@KrishanaSingh这是我尝试的,last child是他想要的。其他地方有问题。加载文档时,列表中的第一个子项处于活动状态$document.readyfunction{$'.meniu a:first child'.addClass'activenum';}不在您提供的小提琴中。你必须将class=active添加到第一个锚点元素中。这是第三个小提琴,第一个锚点处于活动状态。是的,很抱歉,它是*active not activenum,输入:锁定你正在添加的小提琴激活。看看小提琴。它起作用了。
$('.meniu a').on('click', function () {
    var goTo = this.id * -$('#slider').width() + $('#slider').width();
    $('#slider ul').animate({
        left: goTo
    }, 800, 'swing', function () {});
    $('.active').removeClass('active');
    $(this).addClass('active');
    decount = this.id;
    window.location.hash = this.id;
    if ($('.meniu a:last-child').hasClass('active')) {
        console.log('change button');
    }


});