未捕获的TypeError:undefined不是具有切换功能的函数

时间:2014-12-15 12:24:34

标签: javascript jquery

当我尝试将jquery用于切换功能时,我收到此错误

  

未捕获的TypeError:undefined不是函数

当我第一次点击div时,它会从左到右显示然后抛出此错误,它将停在那里。当我再次点击时它不会隐藏。这是我正在使用的代码。

 $(function () {
    $("#slideMenuHeader").click(function () {
        //$("#cbp-spmenu-s1").slideToggle("slow");
        var anim = "slide";
        var duration = 500;
        var options = { direction: 'left' };
        $("#cbp-spmenu-s1").toggle(anim, options, duration);
    });
});

如果我使用没有选项对象和持续时间的切换它工作正常。但我想从左到右切换。为什么我收到此错误?

我正在使用JQuery 1.10.2

3 个答案:

答案 0 :(得分:1)

试试这个: 1 GT;您还必须包含jQuery UI

Example

$(".myButton").click(function () {

    // Set the effect type
    var effect = 'slide';

    // Set the options for the effect type chosen
    var options = { direction: $('.mySelect').val() };

    // Set the duration (default: 400 milliseconds)
    var duration = 500;

    $('#myDiv').toggle(effect, options, duration);
});

2 - ;您也可以jQuery UI执行此操作:

工作示例 JSFIDDLE

答案 1 :(得分:1)

如果查看the jquery docs,toggle()最多可使用以下格式的三个可选参数

.toggle( [duration ] [, complete ] )
.toggle( options )
.toggle( duration [, easing ] [, complete ] )

在你的代码中,你传递了三个参数,所以jquery认为你传递的是一个持续时间,一个缓动函数和一个在完成时触发的回调。

但是你传递的是一个选项对象,而不是一个缓动函数。这就是我猜它错误的原因。您需要做的是使用第二种格式,并传递一个选项对象,其中包含持续时间和方向的属性。

答案 2 :(得分:-2)

要使用所有动画,您需要将jQuery UIeffects

包括在一起

如果您不想使用jQuery UI,可以使用以下代码进行简单的toggle

$("#cbp-spmenu-s1").toggle(200); //use anim, options, duration to pass arguments