javascript - SlideUp 命令被忽略,但在控制台中有效?

标签 javascript jquery

下面是我的代码片段,旨在显示所选的某个线程的评论。

$('.comments-count').click(function(){
    if(!commentsDown){
        $(this).parent().parent().siblings('.comments').stop().slideDown();
        commentsDown = true;
        currentlyDown = $(this).parent().parent().siblings('.comments');
    }else{
        $(currentlyDown).stop().slideUp();
        var newDown = $(this).parent().parent().siblings('.comments');
        if(newDown != currentlyDown){
            $(this).parent().parent().siblings('.comments').stop().slideDown();
            commentsDown = true;
            currentlyDown = $(this).parent().parent().siblings('.comments');
        }else{
            commentsDown = false;
            currentlyDown = null;
        }
    }
})

如果将 $(currentlyDown).stop().slideUp(); 行发布到控制台,它就会起作用,但由于某种原因,它在此脚本中被忽略。我输入了 console.log() 命令,它表明它肯定应该执行它。

commentsDown 和 currentDown 是全局变量,最初分别设置为 false 和 null。

Here是一个 JSFiddle。线程当前是静态 HTML。正如您所看到的,如果您打开一个线程,然后打开另一个线程,它可以正常工作,但关闭一个线程则不起作用。

最佳答案

您应该能够将整个代码块减少到:

$(document).ready(function () {
    $('.comments-count').click(function () {
        $('.comments-count').not($(this)).parent().parent().siblings('.comments').stop().slideUp();
        $(this).parent().parent().siblings('.comments').stop().slideToggle();
    })

    //Log colour pattern
    $('div.event-log-entry:even').addClass('evens');
    $('div.event-log-entry:even .comments-count').addClass('evens');
})

<强> jsFiddle example

关于javascript - SlideUp 命令被忽略,但在控制台中有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28755151/

相关文章:

javascript - Angular .js : How can I avoid caching services?

javascript - 使用 location.hash 显示/隐藏元素

javascript - 获取外部引用的类属性是本地的和内联的?

javascript - 使用 jQuery 附加文本后,如何删除文本区域底部的空换行符?

javascript - AngularJS ng-init 不与 ng-repeat 一起使用

javascript - 检查数组中的值是否与选择框的值相同?

javascript - Summernote + Knockoutjs 编辑器在更新 observable 值后未更新

javascript - 使用 jquery 动态选择基于 json 数据的选项

javascript - 仅在关闭选项卡/窗口时触发页面卸载事件

jquery - Bootstrap 模态非阻塞体