Jquery slideToggle的范围问题

时间:2013-08-29 15:01:57

标签: javascript jquery scope this

我正在使用slideToggle并想知道如何将变量传递给回调函数。它追溯未定义。有任何想法吗?干杯!

$('.drop-box .button').click(function(){

    var target = $(this).parent();

    var myVar = $(this);    

    target.slideToggle(300, function(myVar){

        alert(myVar); // undefined
    });

    return false;
});

2 个答案:

答案 0 :(得分:2)

从回调函数的参数中删除myVar。您不需要传入变量,因为它已经在范围内。

target.slideToggle(300, function() {
    alert(myVar);
});

答案 1 :(得分:0)

由于.slideToggle()未将任何参数传递给回调,因此您必须从回调的定义中删除参数myVar。由于回调参数隐藏了您的变量,原始变量将返回到范围。

$('.drop-box .button').click(function(){
    var target = $(this).parent();
    var myVar = "hello";    
    target.slideToggle(300, function(){
        alert(myVar); // hello
    });

    return false;
});