如何将变量传递给jQuery的.fadeOut()

cro*_*ill 2 javascript jquery

我有一个我想传递给的对象.fadeOut().

在我们开始之前,我可以将对象传递给.click():

this.$title.click({story: this}, function (event){
    var story = event.data.story;
}
Run Code Online (Sandbox Code Playgroud)

很简单.

现在我想做类似的事情.fadeOut:

this.$title.fadeOut("fast", {story: this}, function(){
    var story = ???
});
Run Code Online (Sandbox Code Playgroud)

哪个不起作用.但你明白了吗?我怎样才能this进入anon函数?

我正在寻找最干净的解决方案.除此之外,我正在寻找最符合我所做的解决方案.click().

谢谢!

ASIDE:有更清洁的方式this进入.click()吗?

reg*_*4in 5

这是一个关于JS的问题而不是关于jQuery的问题; 你可以这样做:

var story = this

this.$title.click(function () {
  /* story still available */
})

this.$title.fadeOut('fast', function () {
  /* same here */
})
Run Code Online (Sandbox Code Playgroud)

或者更奇特的东西(这也保留了story赋值时的内容,即使它在后面的上部范围被覆盖):

this.$title.click((function (story) {
  return function () {
    /* story is available */
    /* this will be passed to $(...).click(...) */
  }
})(this))
Run Code Online (Sandbox Code Playgroud)