【问题标题】:Scoping issues with Jquery slideToggleJquery slideToggle 的范围问题
【发布时间】:2013-08-29 15:01:57
【问题描述】:
我正在使用 slideToggle 并想知道如何将变量传递给回调函数。它追溯未定义。有任何想法吗?干杯!
$('.drop-box .button').click(function(){
var target = $(this).parent();
var myVar = $(this);
target.slideToggle(300, function(myVar){
alert(myVar); // undefined
});
return false;
});
【问题讨论】:
标签:
javascript
jquery
scope
this
【解决方案1】:
从回调函数的参数中删除myVar。您不需要传入变量,因为它已经在范围内。
target.slideToggle(300, function() {
alert(myVar);
});
【解决方案2】:
由于.slideToggle() 没有将任何参数传递给回调,您必须从回调的定义中删除参数myVar。由于回调参数隐藏了您的变量,原始变量又回到了作用域中。
$('.drop-box .button').click(function(){
var target = $(this).parent();
var myVar = "hello";
target.slideToggle(300, function(){
alert(myVar); // hello
});
return false;
});