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))