是否可以将处理程序绑定到jQuery效果?

Is it possible to bind a handler to a jQuery effect?

本文关键字:jQuery 效果 绑定 程序 处理 是否      更新时间:2023-09-26

我想在元素上执行slideUp或slideDown时调用function。这可能吗?

类似:

$('#panel').on('slideUp', function() { open--; });
$('#panel').on('slideDown', function() { open++; });

更新:问题是有大量的幻灯片调用(例如:$(). slideup())在整个页面,在ajax响应,哈希链接点击等。我希望以某种方式绑定到幻灯片本身,而不是为每个调用函数添加代码。

不能绑定事件,因为没有。

但是你可以传递一个处理器,它将在动画完成后被调用

$('#panel').slideUp(function() { ... });
http://api.jquery.com/slideUp/

如果你真的想这样做,你可以使用自定义事件和你自己的小插件,像这样:

$.fn.mySlideToggle = function() {
  this.slideToggle();
  this.trigger('mySlideToggle');
}
$('div').on('mySlideToggle', function(){ console.log('hey') });
$('button').on('click', function(){ $('div').mySlideToggle(); });

这里有一个小演示(检查控制台):http://jsbin.com/asejif/2/edit

在您的情况下,它是多余的,因为您可以使用幻灯片事件提供的回调,但它可能对其他事情有用…