1

在 jQuery 中,我经常需要调用内置函数(隐藏、显示、slideDown 等),通常我们通过匿名 wrap 函数调用它们:

$('button').click(function () {
  $('div').animate({
    opacity: 0.25
  }, 2000, function() { $(this).hide() })
})

有没有办法像这样通过引用传递这些函数?

$('button').click(function () {
  $('div').animate({
    opacity: 0.25
  }, 2000, $(this).hide)
})

我想这是不可能的,因为 jQuery 将此函数添加到对象的方式,但如果有人能详细说明问题发生的原因,那就太好了。

4

1 回答 1

2

它不像你尝试过的那样工作,因为调用hide不会有$(this). 您可以通过将作为回调传递的函数绑定到需要调用它的对象来做到这一点:

$('button').click(function () {
    $('div').animate({
        opacity: 0.25
    }, 2000, $.fn.hide.bind($(this)));
});

这是一个工作示例

于 2013-03-04T09:46:32.527 回答