Javascript 如何将变量传递给jQuery';s.fadeOut()
我有一个对象要传递给Javascript 如何将变量传递给jQuery';s.fadeOut(),javascript,jquery,Javascript,Jquery,我有一个对象要传递给.fadeOut() 在开始之前,以下是如何将对象传递给。单击() 很简单 现在我想用做一些类似的事情。淡出: this.$title.fadeOut("fast", {story: this}, function(){ var story = ??? }); 这不管用。但你明白了吗?如何将此传递到anon函数中 我在寻找最干净的解决方案。除此之外,我正在寻找最符合我使用所做工作的解决方案。单击() 谢谢 旁白:是否有更干净的方法将此传递到.click()?它似乎没
.fadeOut()
在开始之前,以下是如何将对象传递给。单击()
很简单
现在我想用做一些类似的事情。淡出:
this.$title.fadeOut("fast", {story: this}, function(){
var story = ???
});
这不管用。但你明白了吗?如何将此传递到anon函数中
我在寻找最干净的解决方案。除此之外,我正在寻找最符合我使用所做工作的解决方案。单击()
谢谢
旁白:是否有更干净的方法将此传递到.click()
?它似乎没有像传递事件数据那样的重载
。单击([eventData],处理程序)
因此,在闭包中保留this
,并在函数内部使用
var story = this;
this.$title.fadeOut("fast", function(){
//story can be used here
});
这是一个关于JS的问题,而不是关于jQuery的问题;你可以这样做:
var story = this
this.$title.click(function () {
/* story still available */
})
this.$title.fadeOut('fast', function () {
/* same here */
})
或者更奇特的东西(这也会在赋值时保留故事
的内容,即使它稍后会在上面的范围中被覆盖):
我想我喜欢你的第二个建议。声明局部变量只是为了传递这个让我很烦恼。我会试试看。@crowhill是的,你是对的,这就是我添加它的原因:PDo你对函数块末尾的(这个)有解释吗?我以前用过这个符号,但我从来没有完全理解它的作用。(最后一行,我的意思是:“}”(this)))这称为IIFE(立即调用的函数表达式)。您只需创建一个内联函数,并以this
作为参数立即调用它。这里有更好的解释:或者只是谷歌jsiife
。这非常有用。谢谢。不需要命名函数,使回调中的this
可访问的是闭包var story=this代码>@Jan,呵呵,说得很好。谢谢你指出。更正了我的答案
var story = this
this.$title.click(function () {
/* story still available */
})
this.$title.fadeOut('fast', function () {
/* same here */
})
this.$title.click((function (story) {
return function () {
/* story is available */
/* this will be passed to $(...).click(...) */
}
})(this))