一种将变量传递给嵌套函数的方法

时间:2011-07-21 10:03:16

标签: javascript

有没有办法可以将信息传递给嵌套函数?问题是我想使用jQuery动画一个被删除的对象,然后让它从dom中删除对象。但是没有办法将信息传递给嵌套函数。我首先虽然波纹管会起作用,但没有运气,

tab = this.tab //this.tab is a dom element
$(this.tab).effect('drop',null,null, function(tab)
{
     $(tab).remove()
})

人们建议我将元素存储在全局中,这个函数是类的一部分,并且可以有许多对象可以同时调用这个函数。

三江源!

1 个答案:

答案 0 :(得分:9)

使用闭包你应该能够做到

var tab = this.tab
$(tab).effect('drop', null, null, function() { $(tab).remove(); });

请注意,tab是在“嵌套函数”之外定义的,但由于JavaScript支持闭包,因此该函数可以访问在与自身相同的范围内定义的变量。换句话说,它将能够访问tab。 另请注意,它是不是 this.tab,因为this指的是调用代码的上下文。

附录:我不是一个jQuery人(很奇怪,我知道),但我想你传递给effect()的函数将在tab元素的上下文中执行(即函数this内部引用tab元素。如果是这样,你可能只是做

$(this.tab).effect('drop', null, null, function() { $(this).remove(); });