0

我从 Stack 上的代码创建了这个小提琴,但它触发了一个错误。你能帮忙吗?

我的小提琴:http: //jsfiddle.net/422steve/DVNGc/

原始分析器:https ://stackoverflow.com/a/13000179/501173

我得到的错误是:TypeError: $allExtended.slideUp() is not a function

js:

$('.holder').on('click','a',function(e){   
    e.preventDefault();
    var $allExtended = $(this).closest('.wrapperdoo').find('.extended'),
        $extended = $allExtended.eq( $(this).index() ),        
        doIt= ($extended.is(':visible')) ? $extended.slideUp() : ($allExtended.slideUp()) ($extended.slideDown());   
});
4

2 回答 2

2

这是正在发生的事情 - 在您的三元运算中,在最后一行,您试图调用两个函数。这是不可能的。你需要使用一个if块。这是我重写它的方法。我不知道您是否doIt出于任何目的使用该变量,但您需要检查undefined

$('.holder').on('click','a',function(e){   
    e.preventDefault();
    var $allextended = $(this).closest('.wrapperdoo').find('.extended'),
        $extended = $allextended.eq( $(this).index() ),
        doIt = undefined;

    if ($extended.is(":visible")) {
        doIt = $extended.slideUp();            
    } else {
        $allextended.slideUp();
        doIt = $extended.slideDown();
    }  
});​

- - 编辑 - -

要将类添加到正在单击的 href,只需在函数中执行以下操作:

$(this).addClass('class');

如果您想在完成后删除课程,请这样做。首先,将 this 变量分配为全局变量(这样this变量就不会混淆),如下所示:

var sender = $(this);

然后,在您的slideUp()orslideDown()函数中,第二个参数是完成时的回调:

$allextended.slideUp(500, function() { sender.removeClass('class'); });
于 2012-11-18T03:42:46.190 回答
1

($allextended.slideUp()) ($extended.slideDown())是非常错误的。
您编写的代码调用slideUp(),然后将 的返回值slideUp作为函数调用,传递slideDown().

看起来您正在尝试运行两个语句;为此,您需要一个if块。

于 2012-11-18T03:37:37.790 回答