slideUp命令被忽略,但在控制台中工作?

时间:2015-02-26 23:58:37

标签: 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();发布到控制台中,则行{{1}}可以正常工作,但由于某种原因,它会在此脚本中被忽略。我输入了console.log()命令,它表明它肯定应该执行它。

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

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

2 个答案:

答案 0 :(得分:2)

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

$(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

答案 1 :(得分:-1)

在document.ready标签内添加您的功能;

$(document).ready(function () {
//insert your code here
});

了解更多信息。去这个网站: http://learn.jquery.com/using-jquery-core/document-ready/

希望有所帮助:)