将jQuery的内置函数作为回调传递

时间:2013-03-04 09:39:08

标签: jquery jquery-callback

我经常在jQuery中调用in-build函数(hide,show,slideDown等),通常我们通过匿名包装函数调用它们:

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

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

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

我想这是不可能的,因为jQuery将这些函数添加到对象中,但如果有人能够解释为什么会出现这个问题,那就太好了。

1 个答案:

答案 0 :(得分:2)

它没有按照您尝试过的方式工作,因为对hide的调用不具有$(this)的上下文。您可以通过将作为回调传递的函数绑定到需要调用的对象来执行此操作:

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

这里是working example